xjoi题库一级五段题解(c语言版)

加法检测器

时间限制:1s    空间限制:256M

题目描述

Maoge在教小Maoge加法,他想计算出小Maoge加法的准确度如何,但是因为题目太多了,他算不出来,所以找到了你。

输入三个数,a,b,c, 前两个数为加数,第三个数为小Maoge的答案。

如果小Maoge算的答案和正确答案的差值在正负10(不包括10)以内,就输出“Good”。

如果在10~20(包括10不包括20)之间,就输出“not bad”,否则输出“QwQ”。(不输出引号)

输入格式

一行三个数a,b,c,分别表示两个加数和小Maoge算出来的答案(a,b,c在0~10000之间)。

输出格式

一行一个字符串

样例输入

12 35 37

样例输出

not bad

#include <stdio.h>
#include <math.h>
int main(){
    double add1,add2,res;
    scanf("%lf%lf%lf",&add1,&add2,&res);
    if(fabs(add1+add2-res)<10){
        printf("Good");
    }else if(fabs(add1+add2-res)<20){
        printf("not bad");
    }else{
        printf("QwQ");
    }
    return 0;
}

判断闰年

时间:0.2s   空间:32M

题目描述:

判断一个整数n是否是闰年

输入格式:

输入一个整数n

输出格式:

是闰年输出"yes" 否则输出"no"

样例输入1:
2000
样例输出1:
yes

样例输入2:
1900
样例输出2:
no

约定:

1<=n<=2018

提示:

四年一闰,百年不闰,四百年再闰。

 

#include <stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    if((n%4==0&&n%100!=0)||n%400==0){
        printf("yes");
    }else{
        printf("no");
    }
    return 0;
}

水仙花数

题目描述:

给定一个整数 n,判断其是否为水仙花数。 三个数 a(百位)、b(十位)、c(个位),若满足 a3+b3+c3=abc (abc 为该数本身) ,则称 n 为水仙花数。

输入格式:

一行一个整数 n

输出格式:

若是,输出“YES”,若否,输出“NO”

样例输入:

153

样例输出:

YES

时间限制:

1000

空间限制:

65536

 

#include <stdio.h>
#include <math.h>
int main(){
    int n;
    scanf("%d",&n);
    if(n<100||n>999){
        printf("NO");
        return 0;
    }
    if(pow(n/100,3)+pow(n%10,3)+pow(n/10%10,3)==n){
        printf("YES");
    }else{
        printf("NO");
    }
    return 0;
}

maoge的数学测试

提交(Submit)

中文 切换语言(Change Language)

题目描述:

Maoge 在他的数学测试中遇到了一个他认为很难的问题。这是一个关于分段函数的问题。

这个函数描述如下:

给定一个x, 请计算相应的y值. 

输入:

输入一个整数x (0<=x<=20).

输出:
一个浮点数y的值,代表函数的计算答案,保留两位小数.

样例输入:

3

样例输出:
10.00

 

#include <stdio.h>
#include <math.h>
int main(){
    int x;
    double res;
    scanf("%d",&x);
    if(x<2){
        res=(double)x;
    }else if(x<6){
        res=(double)(pow(x,2)+1);
    }else if(x<10){
        res=(double)(sqrt(x+1));
    }else{
        res=1.0/(x+1);
    }
    printf("%.2f",res);
    return 0;
}

三数中最大和最小

时间:1s   空间:256M

题目描述:

输入三个数,输出最大数,最小数

输入格式:

输入一行,包含三个整数a,b,c 

输出格式:

输出两行,第一行输出最大数,第二行输出最小数。具体格式见样例输出。

样例输入:
1 2 3

样例输出:
The maximum number is : 3
The minimum number is : 1

约定:

1<=a,b,c<=1000000

提示:

 

#include <stdio.h>
int main(){
    int a[3],i;
    for(i=0;i<3;i++){
        scanf("%d",&a[i]); 
    }
    int max=a[0],min=a[0];
    for(i=1;i<3;i++){
        if(max<a[i]){
            max=a[i];
        }
        if(min>a[i]){
            min=a[i];
        }
    }
    printf("The maximum number is : %d\n",max);
    printf("The minimum number is : %d",min);
    return 0;
}

 

买房子

时间:1s   空间:256M

题目描述:

马克思姆想要在一座大房子里面买一套公寓套房,已知有n个套房排成一排,其中有k套房已经被人住了。马克思姆喜欢串门,所以他想要住旁边有人住的房子。我们规定一套房子如果是好房子,那么相邻的房子中至少有一个房子已经有了人住了。但是马克思姆只知道有k个房子有人住了,他并不知道具体哪k个房子住了人。帮助马克思姆算出剩下的房子中,最少有几个好房子,最多有几个好房子。

输入格式:

两个整数n,k 

输出格式:

输出两个整数

样例输入1
6 3
样例输出1
1 3

样例输入2
6 2
样例输出2
1 4

样例输入3
6 0
样例输出3
0 0

约定:

1<=n<=109,0<=k<=n

提示:

 

 

#include <stdio.h>
 
int main() {
 
    int n, k, max, min;
    scanf("%d %d", &n, &k);
    min = (k != 0 && n > k) ? 1 : 0;
    if(n/3>=k){
        max=2*k>=n?n-k:2*k;
    }else if(n/2<k){
        max=n-k;
    }else{
        max=k;
    }
    printf("%d %d\n", min, max);
 
    return 0;
}

 

条件-爱丽丝和鲍勃

提交(Submit)

中文 切换语言(Change Language)

时间:1s   空间:256M
题目描述:

给一张长为a,宽为b的桌子。设有无数张半径为r的圆形纸片。有两个人爱丽丝和鲍勃在桌子上放纸片,之前已放好的纸片不能挪动位置,纸片在放的时候不能相交但可以外切且不能超过桌子的边界,谁放不了谁就输了。问先放的人是否一定能赢,若是输出“Alice win”,否则输出“Bob win”。

输入格式:

输入一行,包含三个整数a,b,r 

输出格式:

输出一行,如果Alice能赢输出“Alice win”,否则输出“Bob win”。

样例输入1:
5 5 2

样例输出1:
Alice win

样例输入2:
6 7 4

样例输出2:
Bob win

约定:

1<=a,b,r<=100

提示:

第一个样例,第一个人放了一个圆之后,第二个人就不能放了

第二个样例,第一个人连一个圆都放不下

#include <stdio.h>
int main(){
    int a,b,r;
    scanf("%d%d%d",&a,&b,&r);
    if(a<2*r||b<2*r){
        printf("Bob win");
    }else{
        if ((a % (2 * r) == 0) && (b % (2 * r) == 0)) {
            printf("Bob win");
        } else {
            printf("Alice win");
        }
    }
}

约会

时间:1s   空间:256M
题目描述:

小蓝准备去和小红约会,小蓝和小红居住在一个平面直角坐标系中,小蓝的家在(0,0)位置,小红的家在(a,b)位置,小蓝每一步可以往上下左右中的任意一个方向移动一个单位,换句话说,他可以从(x,y)走 到(x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1).中的一个位置。

不幸的是小蓝的方向感比较差,所以他每次随机选择了一个方向走出去,有时候可能走着走着走回了自己的家,有时候可能已经走到了小红的家还没有发现,又继续走。

幸运的是,在一个月黑风高的夜晚,他终于走到了小红的家,他高兴地跟小红说,从我家到你家我走了step步,现在你帮帮小红计算一下,从小蓝的家走到小红的家有没有可能走step步

输入格式:

输入一行,包含三个整数,a,b,step

输出格式:

输出一行,如果可能输出“Yes”,否则输出“No”

样例输入1:
5 5 11

样例输出1:
No

样例输入2:
10 15 25

样例输出2:
Yes

样例输入3:
0 5 1

样例输出3:
No

样例输入4:
0 1 3

样例输出4:
Yes

约定:

−10000<=a,b<=10000,1<=step<=2∗10000

提示:

第四个样例:(0, 0) -> (0, 1) -> (0, 2)->(0,1)走了三步。

 

 

#include <stdio.h>
#include <math.h>
int main() {
 
    int a, b,step;
    scanf("%d%d%d", &a, &b, &step);
    int min = (int)fabs(a) + (int)fabs(b);
    if ((step - min) % 2 != 0 || step < min ) {
        printf("No");
    } else {
        printf("Yes");
    }
 
    return 0;
}

小帅打电话

时间:1s   空间:256M

题目描述:

“喂,CCF么?” 

“您好,这里是CCF”

“哦,再见”

     “....”      

学军中学小帅给CCF打了一通奇怪的电话。因为他发现了前三分钟的电话费太便宜了,于是他准备用完三分钟挂电话,接着打。

CCF一脸懵逼。。。

打完电话,小帅回到了学军机房,他开始思考刚才碰到的算法问题。

假如通话时间小于等于3分钟话费都是base块钱,大于三分钟以后每分钟按above块钱算,你有total块钱。问你最长能打多久电话。

输入格式:

输入一行,包含三个整数base,above,total

输出格式:

输出一行,包含一个整数

样例输入:
2 1 4

样例输出:
6

约定:

1<=base,above<=100,1<=total<=10000

提示:

 

#include <stdio.h>
int main() {
 
    int base, above,total;
    scanf("%d%d%d", &base, &above, &total);
    total -= base;
    if(total<0){
        printf("0");
        return 0;
    }else if(total==0){
        printf("3");
        return 0;
    }
    int sum1=3,sum2=3;
    sum1+=total/above;
 
    sum2+=3*(total/base);
 
    printf("%d",sum1>sum2?sum1:sum2);
    return 0;
}

 

 

 

 

 

  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值