牛客编程语言练习赛第三场

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
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 
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
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个水题。
其他的更水。
完结。

你可能感兴趣的:(Python3,ACM,python,c++)