A,输出一串数字序列
Description
输入一行数字n
在下一行输出 n 个数字,这 n 个数字为 n 到 1 的 n 个数字
Input
输入一个整型n(1<=n<=100)
Output
输出占一行
代码:
#include <cstdio> int main() { int n; scanf("%d",&n); for(int i=n;i>=1;i--){ printf("%d ",i); } return 0; }
B,列序字数串一出输
Description
多组输入
“入输组多”
Input
每组数据占两行:
第一行为一个数字n(n ≤ 10000)
下一行为n个数字 (int)
Output
将这 n个数字“出输”,如果数字不足五位就在前面补零
每组“出输”占一行,行末没有多余空格
代码:
#include <stdio.h> int ans[10005]; int main() { int n; while(~scanf("%d",&n)){ for(int i=0;i<n;i++){ scanf("%d",&ans[i]); } for(int i=n-1;i>=0;i--){ if(i==n-1){ printf("%05d",ans[i]); } else{ printf(" %05d",ans[i]); } } printf("\n"); } return 0; }
C,转签义到题
按要求输出样例中的内容
代码:
#include <stdio.h> int main() { printf("\"9900\\100=99,but 99!=100\"\n\"The operation symbol above is wrong\"\n\"Success requires %99 diligence and %1 talent\""); return 0; }
D,王木辛r发明时光机
Description
王木辛r在之前的比赛中发现了常润茶发明了时光机。并且取得了非常好的成绩。时光机是个什么好东西呢。他可以穿越时空。(穿越到之前或之后的时间并且可以抄到nsz的代码)。
因为王木辛r对年龄问题很敏感。每当被问及年龄的时候,他总想要逃避。所以王木辛r连夜苦思冥想夜夜通宵废寝忘食学习跟常润茶加班,也发明了时光机。于是当他18岁以下的时候,别人问他多少岁,他会如实回答,当他年龄大于18时候,他会回答:18。
他坐着时光机穿越到不同的年份,他知道自己穿越后的年龄。那么当他穿越后别人问他年龄的时候他应该怎么回答呢?
Input
第一行一个整数n,(1<=n<=1000),表示穿越时光机的次数;
接下来n行每行一个整数x,(1<=x<=10000),表示穿越后的年龄。
Output
共n行,每行一个整数表示一次穿越后回答的年龄。
解析:
根据题意,此题只需要判断给你的数是否大于18,如果大于18,输出18,如果小于等于18,则原样输出。
代码:
#include <stdio.h> int main() { int n; scanf("%d",&n); while(n--){ int q; scanf("%d",&q); if(q<18){ printf("%d\n",q); } else{ printf("18\n"); } } return 0; }
E,自动WA掘机
Description
小A的家门口有一条很长的路,这条路的一侧长满了参天大树,但就在不久前,小A的城市经历了一场台风,这场台风把位置不是素数的树都吹断了,现在要重新种树来把吹断的树替换掉,但是所有断了的树的树根都留在了地下,想要种树的话就必须把树根先挖出来,小A现在要请挖掘机师傅把l到r之间的树根都挖出来,每挖一个树根要给挖掘机师傅w元,请问小A一共需要支付多少钱?
Input
输入三个数:l,r,w(1<= l <=5000,1<= r <=5000),(1<=w<=998244353)
Output
输出小A一共支付的钱
注意:
注意数据范围,需要开long long或long long int
代码:
#include <stdio.h> #include <stdlib.h> #include <math.h> #define ll long long//宏定义 int main() { ll l,r,w;//注意题目的数据范围,再去确定是用int还是long long scanf("%lld%lld%lld",&l,&r,&w); if(l>r)//题目没明确说明l,r的大小,并且在提示中也提示了l,r大小不明确 { int t=l; l=r; r=t; } ll num=0; if(l==1)//注意这个1,如果去找合数的话一定要特判这个1 num++; for(int i=l;i<=r;i++) { for(int j=2;j<=sqrt(i);j++) { if(i%j==0) { num++; break; } } } ll ans=num*w; printf("%lld\n",ans); return 0; }
F,AC自动机
Description
小C同学刚刚接触到了ACM,在一次偶然的机会下,小C得到了一个密码箱(里面有自动AC题目的终极代码)和一篇文档,密码箱上有一个五位的密码,通过神秘人得知密码就是文档里面元音字母的个数,现在小C向你发出了求助,请求你来帮助他得到终极代码。
Input
第一行输入一个t(1<= t <=100);
接下来有t组数据,每组数据占两行:
第一行输入文档(字符串)的长度n(1<=n<=500)
第二行输入小C的文档(字符串)
Output
每次输出五个数据:每个元音字母的数量
每组输出占一行
题解:
用C语言处理字符串相关题目的时候,有的时候需要用getchar()吸收换行,否则会影响下一次字符的读取。
代码:
#include <stdio.h> int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); getchar(); char s[1005]; scanf("%s", s); int a = 0, b = 0, c = 0, d = 0, e = 0; for (int i = 0; i < n; i++) { if (s[i] == 'a') a++; if (s[i] == 'e') b++; if (s[i] == 'i') c++; if (s[i] == 'o') d++; if (s[i] == 'u') e++; } printf("%d %d %d %d %d\n", a, b, c, d, e); } return 0; }
G,我是签到题
Description
混一天和努力一天,一天看不出任何差别,
三天看不到任何变化,七天也看不到任何距离……
但是一个月后会看到话题不同,三个月后会看到气场不同,
半年后会看到距离不同,一年后会看到人生道路截然不同……
Input
无输入
Output
请按照格式输出下面这段话:
混一天和努力一天,一天看不出任何差别,
三天看不到任何变化,七天也看不到任何距离……
但是一个月后会看到话题不同,三个月后会看到气场不同,
半年后会看到距离不同,一年后会看到人生道路截然不同……
代码:
- int main()
- {
- printf("混一天和努力一天,一天看不出任何差别,\n三天看不到任何变化,七天也看不到任何距离……\n但是一个月后会看到话题不同,三个月后会看到气场不同,\n半年后会看到距离不同,一年后会看到人生道路截然不同……\n");
- return 0;
- }
Description
Caps lock是一种计算机键盘键。按此键可设置输入模式,默认情况下,键入的字母为大写。如果它是偶然按下的,它就会产生一些事故。
让我们考虑键入一个字符时Caps lock键意外打开的情况,如果:
1、它只包含大写字母;
2、除第一个字母外,所有字母都是大写的。
在这两种情况下,我们应该更改所有字母的大小写。例如,单词“hELLO”、“HTTP”、“z”的单词大小写应该改变。
编写一个应用上述规则的程序。如果无法应用规则,程序应保持单词不变。
Input
第一行包含一个由大写和小写字母组成的单词。单词的长度小于等于100。
Output
打印单词的处理结果。
题解:简单改变大小写的题,只需要考虑到何时改变;
在两种情况下需要改变小写:1,所有字母都是大写。2,第一个字母是小写,其余都是大写。3,只有一个小写字母(此种情况只需要在写完代码过后,验证自己写的代码符不符合,如果不符合,就在自己的代码中多加一个判断就行)。
c代码:
#include <stdio.h> #include <string.h> char s[111]; int main() { scanf("%s",s); int len=strlen(s); int sum=0;//统计大写字母的个数 for(int i=0;i<len;i++){ if(s[i]>='A'&&s[i]<='Z'){ sum++;//如果是大写就加一 } } if(sum==len){//如果全是大写字母 for(int i=0;i<len;i++){ s[i]+=32;//把所有的大写字母变成小写字母 } } else if(sum==len-1){//如果有len-1个大写字母,即只有一个小写字母 if(s[0]>='a'&&s[0]<='z'){ for(int i=0;i<len;i++){ if(i==0){ s[i]-=32; } else{ s[i]+=32; } } } } printf("%s",s); return 0; }
cpp代码:
#include <iostream> #include <cstdio> #include <string> using namespace std; int main() { string s; cin>>s; int sum=0; int len=s.length(); for(int i=0;i<len;i++){ if(s[i]>='A'&&s[i]<='Z'){ sum++; } } if(sum==len||((s[0]>='a'&&s[0]<='z')&&sum==len-1)){ for(int i=0;i<len;i++){ if(s[i]>='A'&&s[i]<='Z'){ s[i]+=32; } else{ s[i]-=32; } } cout<<s<<endl; } else{ cout<<s<<endl; } return 0; }