这次训练只做了两道签到题,自信心非常受打击,但是痛定思痛,还是先把这次校训中典型的签到题奉上,从一点一滴开始做起叭;
1.
题目描述
学校附近有个一元店超市,生意火爆,小P学习之余在该超市里做收银员,超市经常要找10元、5元和1元面值的零钱给顾客,但小P经常在找零钱的时候算错帐,于是小P想自己写个程序来自动计算找零钱。输入一个整数代表找零钱的金额,程序计算并输出,需要10元、5元和1元面值的钱币各几张,注意保证总张数最少。
输入
一个整数,代表找零金额
输出
三个整数,空格隔开,分别表示10元、5元、1元纸币的张数。
看到这道题首先想到的是枚举,但很快被题目要求中的保证总张数最少绊住了,于是想用数组来储存张数,但显然过于繁琐放弃。后来想到张数最少不就是保证大面额的张数最多就ok了?过分沙雕导致的浪费时间,暴漏做题太少的问题。
代码实现:
1 #include<stdio.h> 2 int main() 3 { 4 int a,n,b,c; 5 6 scanf("%d",&n); 7 a=n/10; 8 b=n%10/5; 9 c=n%10%5; 10 printf("%d %d %d ",a,b,c); 11 12 return 0; 13 }
2.
题目描述
终于到达考场的小P忘了自己坐在那里了,但他想起自己的座位号是第K个bofinacci数
马上就要考试了,请你帮助他求出他的座位号
设bi表示第i个bofinacci数,则b1=b2=1,对于i≥3有bi=(b2i−2+bi−1∗(i−1))%i
马上就要考试了,请你帮助他求出他的座位号
设bi表示第i个bofinacci数,则b1=b2=1,对于i≥3有bi=(b2i−2+bi−1∗(i−1))%i
输入
一个整数K (K≤1000000)
输出
一个整数表示小P的座位号
这道题乍一看跟之前那个什么数列很相似,本来编写了一个函数就是死活过不去,后来没办法了不能用函数了,就放到主函数里了,后来算b3的时候忘记初始化b1,b2了,浪费了很长时间,刚好时运不济赶上电脑编译器不能调试了,蒙着提交好几次。
代码实现:
1 #include<stdio.h> 2 long int a[1000001]; 3 int main() 4 { 5 long int k; 6 int i=3; 7 scanf("%ld",&k); 8 a[1]=a[2]=1; 9 if(k<=2) 10 { 11 printf("1"); 12 return 0; 13 } 14 while(k>2) 15 { 16 a[i]=(a[i-2]*a[i-2]+a[i-1]*(i-1))%i; 17 k--; 18 i++; 19 } 20 printf("%ld",a[i-1]); 21 return 0; 22 }
3.
题目描述
小P对自己的母校很有感情,他看到一个字符串的时候,总是看一看字符串中的字母能不能组成他母校名字的英文缩写,现给定一个仅由英文字母构成的字符串。请你帮小P找一找能组成几个学校名字的英文缩写。字母不区分大小写。
输入
第一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
第二行为小P学校名字的英文缩写,名字缩写长度不超过10。
输出
输出一个整数,表示字符串中包含学校名字缩写的个数。
这道题神坑,刚开始没有发现规律,也不知道在想什么,后来发现他就是在变相的数字目啊,刚好之前做过这种题目,但自己老分不清排序和找出最小值,是自己的锅自己背。
1 #include<stdio.h> 2 #include<string.h> 3 char s1[10001],s2[10]; 4 int a[26]={0},b[26]={0}; 5 int main() 6 { 7 int i,j; 8 char ch; 9 gets(s1); 10 gets(s2); 11 12 for(i=0;i<strlen(s1);i++) 13 { ch=s1[i]; 14 if(ch>='A'&&ch<='Z') 15 ch=ch+32; 16 if(ch>='a'&&ch<='z') 17 a[ch-'a']++; 18 //a[i]的值就代表第几个字母的个数; 19 } 20 21 22 for(i=0;i<strlen(s2);i++) 23 { ch=s2[i]; 24 if(ch>='A'&&ch<='Z') 25 ch=ch+32; 26 if(ch>='a'&&ch<='z') 27 b[ch-'a']++; 28 //b[i]的值就代表第几个字母的个数; 29 } 30 31 int min=99999; 32 for(i=0;i<26;i++) 33 { 34 if(b[i]!=0&&a[i]/b[i]<min) 35 min=a[i]/b[i]; 36 } 37 38 printf("%d ",min); 39 40 41 return 0; 42 43 }
到此为止签到题就没有啦,后面的大佬题待我研究研究再上传。
-