实验一
一. 7-1 3人分糖果
幼儿园里,有3个小朋友编号分别是1、2、3,他们按自己的编号顺序围坐在一张圆桌旁,每个小朋友的面前分别有8、9、10颗糖果。现在做一个分糖果游戏,从1号小朋友开始,将自己的糖果平均分成三份(如果有多余的糖果,则自己立刻吃掉),自己留一份,其余两份分给相邻座位的两个小朋友。接着,2号、3号小朋友也同样这么做。请问一轮后,每个小朋友面前分别有多少糖果?
输入格式:
本题目没有输入。
输出格式:
在一行内显示以下结果。注意行末除了换行符不能有任何多余字符。
10 8 5
输入样例:
本题目没有输入。
输出样例:
10 8 5
参考答案:
#include<iostream>
using namespace std;
int main(){
cout<<10<<" "<<8<<" "<<5;
return 0;
}
二. 什么是机器学习
什么是机器学习?上图展示了一段面试官与“机器学习程序”的对话:
面试官:9 + 10 等于多少?
答:3
面试官:差远了,是19。
答:16
面试官:错了,是19。
答:18
面试官:不,是19。
答:19
本题就请你模仿这个“机器学习程序”的行为。
输入格式:
输入在一行中给出两个整数,绝对值都不超过 100,中间用一个空格分开,分别表示面试官给出的两个数字 A 和 B。
输出格式:
要求你输出 4 行,每行一个数字。第 1 行比正确结果少 16,第 2 行少 3,第 3 行少 1,最后一行才输出 A+B 的正确结果。
输入样例:
9 10
输出样例:
3
16
18
19
参考答案:
#include<iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int sum = a+b;
cout<<sum-16<<endl;
cout<<sum-3<<endl;
cout<<sum-1<<endl;
cout<<sum;
return 0;
}
三. 7-3 鸡兔同笼
《孙子算经》中记载了一个有趣的问题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”根据上述描述可列出如下形式的二元一次方程组。
{x+y=352x+4y=94
那么求解鸡兔同笼问题就转化成了二元一次方程组求解问题。本题要求编写程序对任意给定的头数和足数判断鸡和兔各有多少。
输入格式:
在一行中给出任意两个非负整数,整数之间用空格分开,第一个整数表示头数,第二个整数表示足数。
输出格式:
在一行中按照chickens = mm; rabbits = nn的格式输出解,如果无解则输出No solution! 。其中mm与nn都是非负整数。
输入样例1:
35 94
输出样例1:
chickens = 23; rabbits = 12
输入样例2:
94 35
输出样例1:
No solution!
参考答案
#include<iostream>
using namespace std;
int main(){
int head,foots;
cin>>head>>foots;
if((foots-head*2)%2!=0 || (head==0&&foots!=0)||(foots==0&&head!=0)||head<foots/4){
cout<<"No solution!";
return 0;
}
int rabbits = (foots-head*2)/2;
int chickens = head - rabbits;
cout<<"chickens = "<<chickens<<"; rabbits = "<<rabbits;
return 0;
}
四. 7-4 位数和
输入一个4位整数,求各个位上的数字之和。
输入格式:
一个四位数的整数。
输出格式:
一个整数,表示各位之和。
输入样例:
1234
输出样例:
10
样例解释:1+2+3+4=10
参考答案
#include<iostream>
using namespace std;
int main(){
int num;
cin>>num;
int sum = 0;
while(num>0){
int left = num%10;
num/=10;
sum+=left;
}
cout<<sum;
return 0;
}
五. 7-5 逆序的三位数
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
参考答案
#include<iostream>
using namespace std;
int main(){
int num;
cin>>num;
int sum = 0;
while(num>0){
int left = num%10;
sum = sum*10+left;
num/=10;
}
cout<<sum;
return 0;
}
六. 7-6 算时间
夏老板在跑步机上锻炼身体。他低头一看,跑步机上记录的跑步时间是以秒为单位,屏幕上显示夏老板跑步的总时间是x秒。
夏老板想用“时分秒”的形式来表示跑步时间,他向你提问:x秒是多少个小时 多少分钟 多少秒?
输入格式:
一行,一个整数x(0≤x≤2∗1012)。
输出格式:
一行,三个整数a,b,c分别表示时分秒,其间以":"作为间隔。
输入样例1:
8000
输出样例1:
2:13:20
输入样例2:
1234
输出样例2:
0:20:34
样例1说明:8000秒等于2小时13分20秒。
参考答案
#include<iostream>
using namespace std;
int main(){
long long time;
cin>>time;
long long hour = time/3600;
time -=hour*3600;
long long minite = time/60;
time-=minite*60;
long long second = time;
cout<<hour<<":"<<minite<<":"<<second;
return 0;
}