当前位置:   article > 正文

2022年6月中国电子学会C语言编程考试3级试题_迷信的病人电子学会

迷信的病人电子学会

目录

1.【制作蛋糕】(第一题)

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

2.【找和最接近但不超过K的两个元素(第二题)】

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

3.【数根】

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

4.【迷信的病人】★★★★★

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

【样例解释】​​​​​​​


​​​​​​​

1.【制作蛋糕】(第一题)

【题目描述】

小A擅长制作香蕉蛋糕和巧克力蛋糕。制作一个香蕉蛋糕需要2个单位的香蕉,250个单位的面粉,75个单位的糖,100个单位的黄油。制作一个巧克力蛋糕需要75个单位的可可粉,200个单位的面粉,150个单位的糖,150个单位的黄油。一个香蕉蛋糕可以卖出400元,而一个巧克力蛋糕可以卖出450元。为了避免蛋糕变质,每种蛋糕至多只能制作100个。

现已知每种原料的数量,求小A至多可以卖出多少元的蛋糕。

【输入】

依次输入面粉、香蕉、糖、黄油、可可粉的数量,每种原料数量均为不超过100000的整数。

【输出】

输出一个整数,表示最多卖出的钱数。

【输入样例】

4000
6
2000
500
500

【输出样例】

1700
  1. #include<bits/stdc++.h>//枚举
  2. using namespace std;
  3. int main()
  4. {
  5. int mf,xj,t,hy,kkf,xjcake=0,kkcake=0,msum=0,sum=0;
  6. cin>>mf>>xj>>t>>hy>>kkf;
  7. for(int i=0;i<=xj/2;i++)//最多的香蕉蛋糕数量
  8. for(int j=0;j<=kkf/75;j++)//最多的巧克力蛋糕数量
  9. {
  10. if((i*250+j*200)<=mf&&(i*75+j*150)<=t&&(i*100+j*150)<=hy&&i<=100&&j<=100)//是否符合原料要求
  11. {
  12. sum=i*400+j*450;//money
  13. if(sum>msum)
  14. msum=sum;//打擂台
  15. }
  16. }
  17. cout<<msum;
  18. return 0;
  19. }

2.【找和最接近但不超过K的两个元素(第二题)】

【题目描述】

在一个长度为n(1 < n < 1000)的整数(0至1000之间)序列中,选出两个元素使得它们的和最接近但不超过K(0 <= K < 2000)。保证一定存在不超过K的两元素和。

【输入】

第一行输入一个整数n 第二行输入一个整数K 第三行输入序列,用空格分开

【输出】

最接近但不超过K的和

【输入样例】

4
7
1 2 2 8

【输出样例】

4

  1. #include<bits/stdc++.h>//枚举
  2. using namespace std;
  3. int main()
  4. {
  5. int n,k,sum,msum=0;//msum表示最接近但不超过K的和
  6. int s[1002];//存元素
  7. scanf("%d%d",&n,&k);
  8. for(int i=1;i<=n;i++)
  9. scanf("%d",&s[i]);//输入
  10. for(int i=1;i<=n;i++)
  11. for(int j=1;j<=n;j++)
  12. {
  13. if(i==j)//下角标不可以一样
  14. continue;
  15. sum=s[i]+s[j];//现在的和
  16. if(sum<=k/*不超过K*/&&sum>msum/*比最大值大*/)//合起来就是判断现在的和是不是最接近但不超过K的和
  17. msum=sum;//最大值赋值给他
  18. }
  19. printf("%d",msum);//输出最接近但不超过K的和
  20. return 0;
  21. }

3.【数根】

【题目描述】

数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。 比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。

【输入】

一个正整数(小于101000)。

【输出】

一个数字,即输入数字的数根。

【输入样例】

24

【输出样例】

6

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int n;//用来存储
  6. cin>>n;
  7. int w;//用来计算
  8. while(n>=10)//不为一位数
  9. {
  10. w=n;//n的值赋值给w,让w计算
  11. n=0;
  12. while(w!=0)//数位分离
  13. {
  14. n+=w%10;//加上每一位的数字
  15. w/=10;
  16. }
  17. }
  18. cout<<n;//输出一位数
  19. return 0;
  20. }

4.【迷信的病人】★★★★★

【题目描述】

医院为了方便对患者进行建档和管理,引入了9位整数ID号来标识每个病人。最近医院入住了一个迷信的病人,他认为ID号的好坏直接决定了自己的命运。他对ID号x有如下要求:
(1)x的前三位数构成的整数是素数
(2)x的后三位数构成的整数是平方数(所谓平方数,是指它是某一个正整数的平方,e.g. 1,4,9,16...)
(3)x中不包含"13"
为了避免不必要的医患矛盾,医院须尽量满足他的需求。现给定正整数区间[m,n],请你判断存在几个满足病人需求的ID号。

【输入】

两个正整数m,n,以空格隔开。(999999999>=n>=m>=111111111)

【输出】

一个整数(满足要求的ID的个数)。

【输入样例】

157689476 157689687

【输出样例】

5

【样例解释】

        存在5个满足要求的ID:157689484,157689529,157689576,157689625,157689676

  1. #include<bits/stdc++.h>//这一道题的思路为把九位数分为三个部分,先判断前三位是不是素数,在判断后三位是不是平方数,最后判断有没有13.
  2. using namespace std;
  3. bool zs(int n)//判断n是不是素数
  4. {
  5. if(n<2) return 0;
  6. for(int i=2;i*i<=n;i++)
  7. if(n%i==0)
  8. return 0;
  9. return 1;
  10. }
  11. bool check(int n)//判断n是不是含有13
  12. {
  13. int a=0,b;
  14. while(n!=0)
  15. {
  16. n/=10;
  17. if(n%100==13)
  18. return 0;
  19. }
  20. return 1;
  21. }
  22. int main()
  23. {
  24. int m,n,i,cnt=0;
  25. int a[1010],aa=0,b[1010],bb=0;//aa为素数个数,bb为平方数个数
  26. scanf("%d%d",&m,&n);
  27. for(i=101;i<1000;i++)
  28. {
  29. if(zs(i)==1)
  30. {
  31. a[aa]=i;//如果是,存在a数组里
  32. aa++;
  33. }
  34. }
  35. bb=31;
  36. for(int i=1;i<=31;i++)
  37. b[i]=i*i;
  38. int shu=0;
  39. for(i=0;i<aa;i++)//枚举素数
  40. {
  41. for(int j=0;j<1000;j++)//枚举中间数
  42. {
  43. for(int k=1;k<=bb;k++)//枚举平方数
  44. {
  45. shu=a[i]*1000000+j*1000+b[k];//把这个数算出来
  46. if(shu>=m&&shu<=n&&check(shu))//如果是好的ID号
  47. cnt++;计数器加1
  48. }
  49. }
  50. }
  51. printf("%d",cnt);//输出个数
  52. return 0;
  53. }

以上就是2022年6月中国电子学会C语言编程考试3级试题

请点赞+关注

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号