牛客竞赛语法入门班选择结构习题代码整理

A 比大小

比较整数a和整数b的大小。

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){//比较整数a和整数b的大小。int a,b;cin >> a >> b;if(a" << endl;return 0;
}

B 卡拉兹函数
卡拉兹函数是怎么回事呢?卡拉兹相信大家都很熟悉,但是卡拉兹函数是怎么回事呢,下面就让小编带大家一起了解吧。  
卡拉兹函数,其实就是当n是奇数时,输出3*n+1,当n是偶数时,输出n/2,大家可能会很惊讶卡拉兹怎么会是函数呢?但事实就是这样,小编也感到非常惊讶。  

这就是关于卡拉兹函数的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int n;cin >> n;int k; if(n%2==0){//是偶数 k=n/2;}else{//是奇数 k=3*n+1;} cout << k << endl;return 0;
}

C 默契
经过无数次Wa~~以后,小财终于理解了二分查找,终于可以出去玩了。
正好这时小金来找他玩猜数字的游戏,
每个人随即说出一个数字,若两数字相等输出“Tacit!”(不包括引号),否则输出“No Tacit!”(不包括引号)

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int x,y;cin >> x >> y;if(x==y)cout << "Tacit!" << endl;elsecout << "No Tacit!" << endl;return 0;
}

D 整除判断

乎乎学会了除法,他想知道整数m能否被整数n整除。

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int m,n;cin >> m >> n;if(m%n==0)cout << "YES" <

E CSimplemathproblem
这一节课,Priest给大家做了一个小测试。
老师给了你两个正整数X, Y。并按照一下规则做运算,求出答案Z。
如果X是Y的因数,则Z等于X + Y。否则Z = Y - X。

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){long long x,y;cin >> x >> y;long z;//最后的答案if(y%x==0)z=x+y;elsez=y-x;cout << z << endl; return 0;
}

F 吃瓜群众

群众想要吃瓜,于是给你一个瓜让你切,但是作为考验

告诉你西瓜的重量,问你能否将这个西瓜分成两部分,每个部分都是偶数。

注意:这里说的是能否分成两部分,不是能否平均分成两部分

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int weight;//西瓜的重量cin >> weight;if(weight%2==0&&weight>2){//weight=2时不满足cout << "YES, you can divide the watermelon into two even parts.";} else{cout << "NO, you can't divide the watermelon into two even parts.";}return 0;
}

G jyq跳格子
担心大学生活过于苦闷,出题人决定带着大家一起玩起来!
当然,想要成为优秀的ccnuacmer,”简单”的脑力热身活动必不可少。
给出连续的n个格子,编号为1~n,游戏开始时,位于编号为1的格子上,每次可以任意选择跳两格或者跳四格。跳跃次数无限制。判断是否能够恰好到达终点。

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int n;int ans=-1;//初始为-1 cin >> n;//表示格子的数量n=n-1;//中间有多少个格子if(n%2==0)cout << n+1 << endl;else cout <<	ans << endl; return 0;
}

H 小名的回答
总算到暑假了,小姐姐是非常的闲,所以想去找梅溪湖的小名玩,可是她从没去过梅溪湖,所以只能凭小名告诉她的地方走,每次只能向上下左右四个方向走1步。小姐姐的坐标为(0,0),小名在(a,b),小姐姐有点近视,小名也有点近视。所以到了(a,b)也不一定能和小名会面,不过还好,小姐姐最后找到了小名。小姐姐想要小名知道自己来一趟是多么不容易,所以在聊天的过程中小姐姐说自己为了到这里走了n步。小名,你觉得她说的可能是真话么。有可能就输出YES,否则输出NO(如果用random的话,小姐姐觉得你好像不在意她,明年暑假就不来了)

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){/*小名的回答 a*b>0保证了终点在第一象限或第三象限经过n步到达坐标(a,b),至少需要走a+b步,n>=a+b从(0,0)到(a,b)可能出现往返的情况,但是不管如何往返, 往返的步数一定是偶数往返的步数=多走的无用的步数=n-(a+b) */int a,b,n;cin >> a >> b >>n;int sum;sum=abs(a)+abs(b);if(n>=sum&&(n-sum)%2==0){cout << "YES" << endl;} elsecout << "NO" << endl;return 0;
}

I 牛妹数

如果一个数是一个偶数而且大于50,我们称它为牛妹数

给你一个数,判断它是否是牛妹数

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int n;cin >> n;if(n>50&&n%2==0){cout << "yes" << endl;}elsecout << "no" << endl;return 0;
}

J 判断闰年

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

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){//判断一个整数n是否是闰年//普通年能被4整除且不能被100整除的为闰年//世纪年能被400整除的是闰年//对于数值很大的年份,这年如果能整除3200,//并且能整除172800则是闰年,如172800是闰年,86400不是闰年int n;cin >> n;if(n%4==0&&n%100!=0){cout << "yes" << endl;} else if(n%100==0&&n%400==0){cout << "yes" << endl;}elsecout << "no" << endl;return 0;
}

K 统计数据正负个数

输入10个整数,分别统计输出正数、负数的个数。

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int arr[10]={0};//定义数组存储输入的十个数字int t,p=0,n=0;for(int i=0;i<10;i++){cin >> t;arr[i]=t;if(t>0)p++;else if(t<0)n++;}cout << "positive:" << p << endl;cout << "negative:" << n << endl;return 0;
}

L 小乐乐是否被叫家长
小乐乐的班级进行了一次期中考试,考试一共有3门科目:数学,语文,英语,小乐乐的班主任决定给没有通过考核的同学家长开一次家长会,考核的标准是三科平均分不低于60分,所以现在想请你帮忙算一算小乐乐会不会被叫家长。

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int a,b,c;//表示小乐乐的数学、语文、英语的成绩cin >> a >> b >> c;int sum;sum=a+b+c;if(sum>=180)cout << "NO" << endl;elsecout << "YES" << endl;return 0;
}

M 最大最小值

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

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){//输入三个数,输出最大数,最小数int a,b,c;cin >> a >> b >> c;int max,min;//分别存储最大值和最小值int max1,max2,min1,min2;max1=a>b?a:b;max2=b>c?b:c;max=max1>max2?max1:max2;min1=a

N 送分题

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

数据结构之神ccz又在出毒瘤数据结构了

神出了这样一个题:

给你三个数,在这三个数中间任意加*或者是+,然后可以随便打括号,只要这个表达式合法

比如说1 2 3可以得到:

  • 1+2*3=7
  • 1*(2+3)=5
  • 1*2*3=6
  • (1+2)*3=9

不能改变这三个数的原顺序

最大化表达式的值

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){//不能改变这三个数的原顺序//最大化表达式的值1 <= a , b , c <= 10int a,b,c;cin >> a >> b >> c;//暴力枚举所有可能的情况int max;int x1=a+b+c;int x2=a*b*c;max=x1>x2?x1:x2;int x3=a*b+c;if(x3>max)	max=x3;int x4=a+b*c;if(x4>max)	max=x4;int x5=(a+b)*c;if(x5>max) max=x5;int x6=a*(b+c);if(x6>max) max=x6;cout << max << endl;return 0;
}

O 四季
气象意义上,通常以3~5月为春季(spring),6~8月为夏季(summer),9~11月为秋季(autumn),12月~来年2月为冬季(winter)。请根据输入的年份以及月份,输出对应的季节。

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int y,m;//分别存储年份和月份 ,输入示例201901 scanf("%4d%2d",&y,&m);//直接取出月份和年份 if(m>=3&&m<=5) cout << "spring" << endl;if(m>=6&&m<=8) cout << "summer" << endl;if(m>=9&&m<=11) cout << "autumn" << endl;if(m<=2||m==12) cout << "winter" << endl;return 0; 
}

P B是不是太迟了

众所周知,gplt选拔赛是在10月29号进行。那么大家在10月29号之前都可以训练自己的编程(为什么29号不能训练了呢,因为29号要睡懒觉^_^)。

想在,小金翻开了日历,他想知道今天还能不能训练,是不是太迟了。

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int y,m,d;//年月日char c1,c2;scanf("%d%c%d%c%d",&y,&c1,&m,&c2,&d);if(y==2020&&m<10){//在2020年10月之前来得及 cout << "No. It's not too late." << endl;} else if(y==2020&&m==10&&d<29){//2020年10月29号之前 cout << "No. It's not too late." << endl;}else{cout << "QAQ" << endl;}return 0;
}

Q 前天是哪天

给定公元2000年到公元3000年之间的某一天,请你给出该天的前天是哪一天.

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
void fun(int x) { //如果x不足两位数要补0if(x>0&&x<10)cout << "-0" << x;else cout << "-" << x;
}
int judgeRun(int y) { //判断该年是不是闰年if((y%4==0&&y%100!=0)||(y%100==0&&y%400==0))//是闰年return 1;elsereturn -1;
}
int main() {//前天是哪天int y,m,d;char c,s;int t;//题目保证所有输入日期为合法日期。scanf("%d%c%d%c%d",&y,&c,&m,&s,&d);int arr1[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; //不闰年的每个月的天数int arr2[13]= {0,31,29,31,30,31,30,31,31,30,31,30,31}; //闰年的每个月的天数if(d>2) { //不跨年不跨月的情况d=d-2;//只改变天数 } else if(m>1&&d<=2) { //跨月不跨年的情况,不是一月的时候m=m-1;//月份-1if(judgeRun(y)==1)//闰年t=arr2[m];//求上个月有多少天elset=arr1[m]; if(d==2) { //前天为上个月月底d=t;} else if(d==1) { //前天为上个月月底的前一天d=t-1;}} else if(m==1&&d<=2) { //跨年的情况m=12;y=y-1;//改成前一年if(d==2) {//前天为去年的十二月月底 d=31;} else {//前天为去年的十二月30号 d=30;}}//格式化输出cout << y ;fun(m);//对月份输出fun(d);	//天数不足两位数补0return 0;
}

R L1-2单位换算

已知1英尺=12英寸,1英寸=2.54厘米,1厘米=10毫米。

现在给你一个英尺数,请你换算成毫米。

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){//单位换算int n,t;cin >> n;//单位是英尺 n=n*12;//换成英寸数 float mm;//分别为厘米和毫米//float 类型不能比较相等或不等,但可以比较>,<,>=,<=//用==从语法上说没错,但是本来应该相等的两个浮点数由于计算机内部表示的原因可能略有微小的误差,//这时用==就会认为它们不等。应该使用两个浮点数之间的差异的绝对值小于某个可以接受的值来判断判断它们是否相等,比如用mm=2.54*n*10;t=254*n;//t存储比mm大10倍的数if(t%10==0){//如果个位上是10,说明最后结果是整数,直接输出 cout << t/10 << endl;} else{//结果是小数,输出时保留一位小数 printf("%.1f\n",mm);}return 0;
}

S 纸牌

小w想和你van纸牌

小w有两张纸牌,两张纸牌上都有相同的正整数n

每一轮一张纸牌上的数都可以减去小于等于另外一张纸牌上的数的数

每一轮只能操作和上轮不同的纸牌

小w想知道三轮之后两纸牌上数字之和的最小值

注意,不能减为负数

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
int main(){int n;cin >> n;int a=n,b=n;//2-1=1 2-1=1 1-1=0   res=1+0=1//5-3=2 5-2=3 2-2=0   res=3+0=3//6-3=3 6-3=3 3-3=0   res=3+0=3//7-4=3 7-3=4 3-3=0   res=4+0=4//只要将n/2向上取整即可cout << (n+1)/2 << endl; return 0;
}

T 排队领水
羊村的供水系统搞砸了,隔壁牛村捐赠的的矿泉水刚刚送达,村长让喜羊羊们排队领水,已知有n个羊村村民正在排队取水,懒羊羊不知道他在队伍的具体哪个位置,但他知道有不少于a个人在他前面,有不多于b个人在他后面,你能帮忙计算一下懒羊羊有多少个可能的位置吗?

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){//有不少于a个人在他前面,有不多于b个人在他后面,计算可能的位置数//设前面有x个人,后面有y个人,则满足:x>=a && y<=b && x+y=n-1// 求出来x应该大于等于 max(a,n-1-b)//同时x应该<=n-1综上得到结果 int n,a,b;//0<= a,b < n <= 100cin >> n >> a >> b;int max;max=a>(n-1-b)?a:(n-1-b);int index;index=n-max; cout << index << endl;return 0;
}

U 可编程拖拉机比赛
“这个比赛,归根结底就是控制一个虚拟的小拖拉机跑完整个赛道。一般一场比赛会有 9 个到 13 个赛道,最后看能跑完多少个赛道。”
通常在一场可编程拖拉机比赛中,分别会有实际参赛队伍数 10%、20%、30% 向下取整的队伍获得金、银、铜牌,其余队伍获得荣誉提名,俗称“铁牌”。
但是主办方往往会多准备一些奖牌,那么在发奖牌的时候会按照比例向上取整发出的奖牌以减少浪费,就会有一些原本获得银牌的队伍获得了金牌。
现在给出一个赛区的规模,也就是这个赛区的实际参赛队伍数,小 Q 同学想知道有多少队伍的奖牌会由银变金、由铜变银、由铁变铜。

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){int n;cin >> n;//实际的参赛队伍数int a1,a2,b1,b2,c1,c2;a1=ceil(n*0.1);//向上取整 a2=floor(n*0.1);//向下取整 b1=ceil(n*0.2);b2=floor(n*0.2);c1=ceil(n*0.3);c2=floor(n*0.3);int x,y,z;//由银变金、由铜变银、由铁变铜的队伍数x=a1-a2;y=(b1-b2)+x;z=(c1-c2)+y;cout << x << " " << y << " "  << z << endl; return 0;
}

V [NOIP2004]不高兴的津津
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){int i,x,y;//x,y分别表示每天在学校上课的时间和妈妈安排上课的时间 int t,max_day=1,max=8;//t为临时变量 int flag=-1;//flag表示是否高兴,-1表示高兴for(i=1;i<=7;i++){//获取一周的输入数据 cin >> x >> y;t=x+y;if(t>8){flag=1;//修改flag标志if(t>max){//不高兴程度大于max max=t;max_day=i;//修改不高兴的日期 } } }if(flag==-1) //不会不高兴 cout << 0 << endl;else{cout << max_day << endl;} return 0;
}

W [NOIP2008]ISBN号码
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:
首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。
你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){//保证输入符合ISBN号码的格式要求int a,b,c;char d;scanf("%d-%d-%d-%c",&a,&b,&c,&d);int sum=0;//计算求和的结果,初始化为0//暂存b和c的数值int t1=b,t2=c; //取出b的各位数字int b1,b2,b3;b1=b/100;b2=(b/10)%10;b3=b%10;//cout << b1 <<" "<< b2<<" " << b3 << endl;//取出c的各位数字int c1,c2,c3,c4,c5; c1=c/10000;c=c%10000;	//后四位数c2=c/1000;c=c%1000;c3=c/100;c=c%100;c4=c/10;c5=c%10; sum=a*1+b1*2+b2*3+b3*4+c1*5+c2*6+c3*7+c4*8+c5*9;sum = sum %11;if(sum == 10&&d=='X'){cout << "Right" << endl;}else if(sum!=10&&sum==d-'0'){//将字符d变成数字d cout << "Right" << endl;}else{char x;if(sum==10){x='X';printf("%d-%d%d%d-%d%d%d%d%d-%c\n",a,b1,b2,b3,c1,c2,c3,c4,c5,x); }else printf("%d-%d%d%d-%d%d%d%d%d-%d\n",a,b1,b2,b3,c1,c2,c3,c4,c5,sum); }return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章