『ACM C++』 PTA 天梯赛练习集L1 | 012-015

  女神节快乐鸭,大学的女生节真的是忙碌呢,到处送礼物,真的是当时男生节的出来混的,总该是要还的hhhhh

------------------------------------------------L1-012----------------------------------------------------------

计算指数

真的没骗你,这道才是简单题 —— 对任意给定的不超过 10 的正整数 n,要求你输出 2n​​。不难吧?

输入格式:

输入在一行中给出一个不超过 10 的正整数 n。

输出格式:

在一行中按照格式 2^n = 计算结果 输出 2n​​ 的值。

输入样例:

 5

输出样例:

2^5 = 32

------------------------------------------------L1-012----------------------------------------------------------

 注解:水题,一句话AC

#include<stdio.h>
#include<math.h>

int times;
int main()
{
    scanf("%d",&times);
    printf("2^%d = %d
",times,(int)pow(2.0,times));
    return 0;
 } 

------------------------------------------------L1-013----------------------------------------------------------

计算阶乘和

对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。

输入格式:

输入在一行中给出一个不超过10的正整数N。

输出格式:

在一行中输出S的值。

输入样例:

 3

输出样例:

 9

------------------------------------------------L1-013----------------------------------------------------------

注解:这道题有两种写法,第一种就是用递归的方法,第二种就是直接两层循环for,方法都写出来了如下:按需所取。

递归法:

#include<stdio.h>
long long int sum,temp;
void rec(int times)
{
    if(times == 0) return;
    temp = 1;
    for(int i = times;i>0;i--)
        temp*=i;
    sum+=temp;
    rec(times-1);
}
int main()
{
    int N;
    scanf("%d",&N);
    rec(N);
    printf("%d",sum);
    return 0;
}

循环法:

#include<stdio.h>
long long int temp,sum;
int main()
{
    int N;
    scanf("%d",&N);
    for(int i = N;i>0;i--)
    {
        temp = 1;
        for(int j = i;j>0;j--)    temp*=j;
        sum+=temp;
    }
    printf("%d",sum);
    return 0;
}

------------------------------------------------L1-014----------------------------------------------------------

简单题

这次真的没骗你 —— 这道超级简单的题目没有任何输入。

你只需要在一行中输出事实:This is a simple problem. 就可以了。

输入样例:

输出样例:

This is a simple problem.

------------------------------------------------L1-014----------------------------------------------------------

注解:我不知道这道题出的意义在哪里??? 无聊吗。。。

#include<stdio.h>
int main()
{
    printf("This is a simple problem.");
    return 0;
}

------------------------------------------------L1-015----------------------------------------------------------

跟奥巴马一起画方块

美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!

输入格式:

输入在一行中给出正方形边长N(3N21)和组成正方形边的某种字符C,间隔一个空格。

输出格式:

输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。

输入样例:

10 a

输出样例:

aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa

------------------------------------------------L1-015----------------------------------------------------------

注解:这题有点小知识点,那就是如何做到四舍五入,因为一般/除法只能取整,所以这里很容易WA,下面贴上AC代码:

#include<stdio.h>

int main()
{
    int N;
    char T;
    scanf("%d %c",&N,&T);
    for(int i = (N+(2/2))/2;i>0;i--)
    {
        for(int j = N;j>0;j--)    printf("%c",T);
        printf("
");
    }
    return 0;
    
}

知识点:若想实现四舍五入或进一法,只需:

ans:结果  a:被除数 b:除数:

1(四舍五入) :  ans=(a+(b/2))/b

2(进一法) :   ans=(a+(b-1))/b

注:如果有更好的解法,真心希望您能够评论留言贴上您的代码呢~互相帮助互相鼓励才能成长鸭~~

原文地址:https://www.cnblogs.com/winniy/p/10493400.html