//能力有限,只展示一百分代码。前八个题一般是原题,所以不展示题目。
L1-1 嫑废话上代码
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"Talk is cheap. Show me the code.";
return 0;
}
L1-2 九牛一毛
这是一道脑筋急转弯题:猪肉一斤 15 元,鸡肉一斤 20 元,那么一毛钱能买多少头牛?
答案是:9 —— 因为“九牛一毛”。
本题就请你按照这个逻辑,计算一下 N 块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。
输入格式:
输入在一行中给出一个不超过 1000 的正整数 N,即以“元”为单位的货币量。
输出格式:
在一行中顺序输出 N 块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。三个数字都只取整数部分,其间以 1 个空格分隔,行首尾不得有多余空格。
输入样例:
18
输出样例:
1 0 1620
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a=0,b=0,c=0;
cin>>n;
a=n/15;
b=n/20;
c=n*10*9;
cout<<a<<' '<<b<<' '<<c;
return 0;
}
L1-3 小孩子才做选择,大人全都要
阿汪面前有两只盲盒,每只盒子打开都有两种可能:或者装了 X 克狗粮,或者是一只容量为 Y 克的狗粮储蓄盒。如果是狗粮,阿汪可以快乐地吃掉;如果是空储蓄盒,那就倒霉了,阿汪必须想办法找到狗粮把这只储蓄盒装满,自己还吃不到。
正当阿汪发愁不知道该怎么选的时候,铲屎官大手一挥:“小孩子才做选择,大人全都要!”但全都要的结果,却不一定是赚了还是亏了……
我们假设聪明的阿汪总是能嗅出狗粮最多的盒子,并且绝不会选任何储蓄盒。而铲屎官没有这样的鼻子,他一定是全都要。铲屎官如果打开了有储蓄盒的盒子,就必须想办法把储蓄盒装满,他会优先用另一只盒子里的狗粮装(如果另外一只盒子里有狗粮),不够了还得自己去买新的狗粮,这样阿汪可就亏啦,什么都吃不到了。本题就请你判断阿汪到底是赚了还是亏了。
输入格式:
输入在一行中给出两个整数,绝对值都不超过 100,中间用一个空格分开,分别代表两只盒子里的东西。如果是正数就表示是狗粮的份量,如果是负数就表示绝对值是空盆的容量。两个数都肯定不是 0,因为保证没有空盒子。
输出格式:
第一行输出两个结果:如果让阿汪选能吃到的狗粮 A,和如果铲屎官全都要能吃到的狗粮 B。两个数字间用一个空格分开。如果铲屎官的决定让阿汪赚到了,就在第二行输出一个笑脸 ^_^
,否则输出一个哭脸 T_T
。但如果反正什么都吃不到(两个盒子里都没有狗粮),就输出一张躺平脸 -_-
。
输入样例 1:
12 18
输出样例 1:
18 30
^_^
输入样例 2:
12 -18
输出样例 2:
12 0
T_T
//一般第三题都可能会考这种关于if-else的判断,需要注重细节。
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,x=0,y=0,z=0;
cin>>a>>b;
x=a+b;
if(x<0)x=0;
if(a>b)y=a;
else y=b;
if(a<0&&b<0)y=0;
if(x>0){
if(x>y)cout<<y<<' '<<x<<"\n^_^";//这一点为赚到了
else cout<<y<<' '<<x<<"\nT_T";
}
else {
if(y==0)cout<<"0 0\n-_-";
else cout<<y<<" 0\nT_T";
}
return 0;
}
L1-4 拯救外星人
#include<bits/stdc++.h>
using namespace std;
int main(){
int i,a,b,s=1;
cin>>a>>b;
for(i=1;i<=a+b;i++)
s*=i;
cout<<s;
return 0;
}
L1-5 试试手气
//数学思维
#include<bits/stdc++.h>
using namespace std;
int main(){
int i,k,a[8];
for(i=1;i<=6;i++)
cin>>a[i];
cin>>k;
for(i=1;i<=6;i++){
if(6-k>=a[i])a[i]=7-k;
else a[i]=6-k;
}
for(i=1;i<=6;i++){
if(i!=1)cout<<' ';
cout<<a[i];
}
return 0;
}
L1-6 打PTA
传说这是集美大学的学生对话。本题要求你做一个简单的自动问答机,对任何一个问句,只要其中包含 PTA
就回答 Yes!
,其他一概回答 No.
。
输入格式:
输入第一行给出一个整型范围内的正整数 N,随后 N 行,每行给出一个长度不超过 80 的字符串,为用户输入的句子,由英文字母、数字、空格和标点符号组成,以回车结束。
输出格式:
对每一行句子,如果其结尾字符为问号 ?
则判断此句中有无 PTA
?如果有则在一行中输出 Yes!
,否则输出 No.
。如果不是问号结尾,则敷衍地回答 enen
。
输入样例:
5
Hello!
Do you still play WZRY?
Chi Ji?
you play PTA ah?
how about pta site?
输出样例:
enen
No.
No.
Yes!
No.
//find函数
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;string s;
cin>>n;
getchar();
while(n--){
getline(cin,s);
if(s[s.size()-1]=='?'){
if(s.find("PTA")!=-1)cout<<"Yes!\n";
else cout<<"No.\n";
}
else cout<<"enen\n";
}
return 0;
}
L1-7 机工士姆斯塔迪奥
//二维数组也可以,关键是对已出现的标记。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,q,x=0,y=0,s=0,a,b;map<int,int>p[100005];
cin>>n>>m>>q;
while(q--){
cin>>a>>b;
if(p[a][b]==0){
p[a][b]=1;
if(a==0)x++;
else y++;
}
}s=n*m-(m*x+n*y-x*y);
cout<<s;
return 0;
}
L1-8 随机输一次
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现要求你编写一个控制赢面的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方意识到你在控制结果,你需要隔 K 次输一次,其中 K 是系统设定的随机数。
输入格式:
输入首先在第一行给出正整数 N(≤10),随后给出 N 个系统产生的不超过 10 的正随机数 { K1,K2,⋯,KN },数字间以空格分隔。这意味着第 i(i=0,1,⋯,N−1)次输局之后应该隔 Ki+1 次再让下一个输局。如果对方出招太多,则随机数按顺序循环使用。例如在样例中,系统产生了 3 个随机数 {2, 4, 1},则你需要:赢 2 次,输 1 次;赢 4 次,输 1 次;赢 1 次,输 1 次;然后再次回到第 1 个随机数,赢 2 次,输 1 次。
之后每行给出对方的一次出招:“ChuiZi”代表“锤子”、“JianDao”代表“剪刀”、“Bu”代表“布”。“End”代表输入结束,这一行不要作为出招处理。输入保证对方至少出了一招。
输出格式:
对每一个输入的出招,按要求输出赢或输局的招式。每招占一行。
输入样例:
3 2 4 1
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
End
输出样例:
Bu
ChuiZi
ChuiZi
ChuiZi
JianDao
Bu
Bu
JianDao
ChuiZi
ChuiZi
ChuiZi
JianDao
JianDao
//循环嵌套,只是我把内循环换种表达。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,a[105],j=1,y=0;string s;
cin>>n;
for(i=1;i<=n;i++)cin>>a[i];
while(cin>>s){
if(s=="End")break;
if(j==n+1)j=1;
y++;
if(y-1==a[j]){
y=0;j++;
if(s=="Bu")cout<<"ChuiZi\n";
else if(s=="JianDao")cout<<"Bu\n";
else cout<<"JianDao\n";
}
else{
if(s=="Bu")cout<<"JianDao\n";
else if(s=="JianDao")cout<<"ChuiZi\n";
else cout<<"Bu\n";}
}
return 0;
}