2020软院算法组新生周练 - 第一周

A,折纸大佬的签到题

Problem Description

折纸大佬非常喜欢数学,一天折纸大佬看到了一个二元一次方程,折纸大佬对这个题目表示不屑,现在你能解出这个二元一次方程吗

确保每组输入都为有解

Input

输入三个整数,表示二元一次方程$ax^2+bx+c=0$中的$a,b,c$,$(0<=a,b,c<=10)$

Output

输出一行两个数字,表示解$x_{1},x_{2}$,(默认$x_{1}>x_{2}$),保留两位小数

Sample Input

1 -2 1

Sample Output

1.00 1.00

请使用多组输入,即:
#include<stdio.h>
int main(void){
    int a,b;
    while(~scanf("%d%d",&a,&b)){
        printf("%d\n",a+b);
    }
    return 0;
}

ps:求根号的函数为sqrt(double(n)),库函数为#include<math.h>

标程

#include<stdio.h>
#include<math.h>
int main(void){
    int a,b,c;
    double x1,x2;
    while(~scanf("%d%d%d",&a,&b,&c)){
        if(a==0){
            x1=x2=-c/(double)b;
        }
        else{
            x1=(-b+sqrt(b*b-4*a*c))/(double)(2*a);
            x2=(-b-sqrt(b*b-4*a*c))/(double)(2*a);
        }
        printf("%.2lf %.2lf\n",x1,x2);
    }
    return 0;
}

B,千言学长的签到题

Problem Description

这才是真正的签到题,请输出"高飞学长天下无双"

Input

没有输入

Output

输出"高飞学长天下无双",注意不用换行

Sample Input

Sample Output

高飞学长天下无双

标程

#include<stdio.h>
int main(void){
    printf("高飞学长天下无双");
    return 0;
}

C,高飞学长的签到题

Problem Description

高飞学长非常的强,强的让人五体投地,作为高飞学长的队友,不知天高地厚的千言学长想要挑战高飞学长,

他们决定通过摸石子的游戏来决定胜负,

现在这里有个石子,高飞学长先手,可以取走个石子,千言学长也是如此,当谁没有石子可取时,就算谁落败,千言学长虽不及高飞学长,但也会选择最优的取石子方法,现在请你判断在这场游戏中谁会胜出。

Input

输入一行两个整数,$n,m(1<=n,m<=10000)$,表示一共有n个石子,m为单次取石头的上限

Output

如果高飞学长胜出,请输出“高飞学长天下无双” 如果千言学长胜出,请输出“千言学长略胜一筹”

Sample Input

5 2
3 2

Sample Output

高飞学长天下无双
千言学长略胜一筹

标程

#include<stdio.h>
int main(void){
   int n,m;
    while(~scanf("%d%d",&n,&m)){
        if(n % (m+1) !=0) printf("高飞学长天下无双\n");
        else printf("千言学长略胜一筹\n");
    }
    return  0;
}

D,hanhan学长的签到题

Problem Description

时间管理大师hanhan学长在同一天参加了两个活动,已知第一个和第二个活动的开始时间已经第一个活动的持续时间 现在憨憨学长想要知道是否能在第一个活动结束之后参加第二个活动,

Input

输入有三行,第一二行都为三个数字,表示两个活动开始的时间,(小时,分钟,秒钟) 第三行为一个数字,表示第一个活动的持续时间,单位为秒 保证两个活动在同一天并且第一个活动比第二个活动早

Output

若hanhan学长的第一个活动结束后能参与第二个活动(即在第二个活动开始前结束第一个活动),输出"YES",否则“NO” (友情提示:第一个活动结束的同时开启第二个活动也为输出“YES”)

Sample Input

7 00 00
8 00 00
3599

Sample Output

YES

标程

#include<stdio.h>
int main(void){
    int x1,x2,x3,y1,y2,y3,cnt;
    int cnt1;
    while(~scanf("%d%d%d%d%d%d%d",&x1,&x2,&x3,&y1,&y2,&y3,&cnt)){
        int sum=0;
        if(x3<=y3)
            sum+=y3-x3;
        else{
            sum+=(60+y3)-x3;
            y2--;
        }
        if(x2<=y2)
            sum+=y2-x2;
        else{
            sum+=((60+y2)-x2)*60;
            y1--;
        }
        sum+=(y1-x1)*3600;
        if(sum>=cnt)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

E,咕咕咕学长的签到题

Problem Description

咕咕咕学长在爬楼的的时候想到一个问题, 楼梯共有n格,咕咕咕学长可以一次爬1格,也 可以一次爬两格,咕咕咕学长想知道有多少种方式爬完楼梯。

Input

输入一行一个整数$n(1<=n<=10)$,表示楼梯的格数

Output

输出一行一个整数,表示爬完楼梯的方式数

Sample Input

3

Sample Output

3
(提示: 1 1 1
1 2
2 1
三种情况,
再提示,爬三格可以分解在到达第三格时的前一个状态可以是位于第一格也可以是位于第二格(即向后退
一格或者两格),然后将两种情况相加就是爬到第三格的方式种数。

标称

#include<stdio.h>
int main(void){
    int n;
    int f[11];
    while(~scanf("%d",&n)){
        f[1]=1;
        f[2]=2;
        int i=2;
        for(i=3;i<=n;++i){
            f[i]=f[i-1]+f[i-2];
        }
        printf("%d\n",f[n]);
    }
    return 0;
}

--------------------------------------
#include <stdio.h>
int main(void) {
    int n;
    while (~scanf("%d", &n)) {
        int a = 1, b = 2, c;
        for (int i = 3; i <= n; ++i) {
            c = a + b;
            a = b, b = c;
        }
        printf("%d\n", b);
    }
    return 0;
}

F,bernard学长的签到题

Problem Description

bernard学长在一次外出时,看到墙上有五位数,bernard学长想要知道这五个数字倒过来输出是怎么 样,现在请你帮助bernard学长输出。

Input

输入一行一个整数$n(10000<=n<=99999)$,表示bernard学长看到的数字

Output

输出一行一个整数,表示倒过来的数字。

Sample Input

12345

Sample Output

54321

标称

#include<stdio.h>
int main(void){
    int n,i;
    char s[5];
    while(~scanf("%s",s)){
        getchar();
        for(i=4;i>=0;--i)
            printf("%c",s[i]);
        printf("\n");
    }
    return 0;
}

G,朝阳学长的签到题

Problem Description

朝阳学长在和bernard学长的一次外出中,bernard学长看到了墙上的数字,而朝阳学长注意到的是地上的的一个式子, $x=1^{3}+2^{3}+3^{3}....n^{3}$,现在,朝阳学长想要知道当n为一个值时,x为多少

Input

输入一行一个整数$n(1<=n<=10)$

Output

输出一行一个整数,表示x

Sample Input

1
2

Sample Output

1
9

标称

#include<stdio.h>
int main(void){
    int n,sum,i;
    while(~scanf("%d",&n)){
        sum=0;
        for(i=1;i<=n;++i){
            sum+=i*i*i;
        }
        printf("%d\n",sum);
    }
    return 0;
}

H,Hamman学长的签到题

Problem Description

朝阳学长在和bernard学长都在认真解题时,Hamman学长出现了,Hamman学长想要打印一个三角形,三角形的样式由Hamman学长决定, Hamman学长想要朝阳学长在和bernard学长帮助他,但是他们都没有理Hamman学长,因此只能希望你能够帮助Hamman学长完成三角形 的答应。

Input

输入有两行,第一行一个整数$n(1<=n<=10)$表示三角形的层数,第二行为一行字母,共有n个表示每一行使用到的字母

Output

输出n行,表示一个三角形

Sample Input

3
abc

Sample Output

  a
 bbb
ccccc

标称

#include<stdio.h>
int main(void){
    int i,j,k,n;
    char s[11];
    while(~scanf("%d",&n)){
        getchar();
        for(i=1;i<=n;++i)
            scanf("%c",&s[i]);
        for(i=1;i<=n;++i){
            for(j=n-i;j>0;--j)
                printf(" ");
            for(k=1;k<=2*i-1;++k)
                printf("%c",s[i]);
        printf("\n");
        }
    }
    return 0;
}
全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务