牛客編程語言練習賽第三場

Powered by:AB_IN 局外人
沒錯,我來水博客了。。。

B 學生基本信息輸入輸出

Py3

a, b = input().split(';')
c, d, e = map(float, b.split(','))
c += 1e-8
d += 1e-8
e += 1e-8
print(f'The each subject score of  No. {a} is {c:.2f}, {d:.2f}, {e:.2f}.')

值得一說的是,f' {ans:.nf}'round(ans,n)在保留n位小數的方面,都會出現逢5不進的情況,原因就是float在儲存小數時,會有誤差。
怎麼解決呢?
那就逼它記得誤差更小。直接加上1e-8(當然也可以加的更小),讓有效小數後面全爲0。
C++

#include<stdio.h>
int main()
{
    int a;
    float b,c,d;
    scanf("%d;%f,%f,%f",&a,&b,&c,&d);
    printf("The each subject score of  No. %d is %.2f, %.2f, %.2f.",a,b,c,d);
}

c++直接自動四捨五入,值得注意的是輸入。當題目給的出現多餘的符號時,直接按格式輸入就好了。然後用floatdouble數據大但不準。

G 翻轉金字塔圖案

一定要善於找 格式行和列的關係!

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int i,j,k,n;
int main()
{
    while(cin>>n)
        for(i=1;i<=n;i++){
            for(j=1;j<i;j++)
                printf(" ");
            for(k=n;k>=i;k--)
                printf("* ");
            printf("\n");
        }
    return 0;
}

J 楊輝三角

寫的很正常,主要爲了記一下楊輝三角。
C++

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
 ll a[35][35],n;
int main()
{
    a[1][1]=1;
    for(int i=2;i<=35;i++){
        for(int j=1;j<=35;j++){
            a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
    }
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++){
            cout<<setw(5)<<a[i][j];
        }
        cout<<endl;
    }
    return 0;
}

Py3

n=int(input())
a=[[0 for i in range(n)] for j in range(n)]#一定要先賦值列表
for i in range(n):
    for j in range(n):
        if j==0 or j==n:
            a[i][j]=1
        else:
            a[i][j]=a[i-1][j-1]+a[i-1][j]
        if a[i][j]!=0:
            print(f'{a[i][j]:5d}',end="")
    print()

騷操作。

def f(x):
    if x == 0:
        return 1
    return x * f(x-1)
 
n = int(input())
for i in range(n):
    for j in range(i+1):
        print(f'{f(i)//f(j)//f(i-j):5d}',end="")
    print()

其實是有公式的。假設 行是i 列是j(從0開始),則a[i][j]=(i)!//(j)!//(i-j)!。即C(i,j)

就更3個水題。
其他的更水。
完結。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章