赞
踩
目录
【样例解释】
【题目描述】
小A擅长制作香蕉蛋糕和巧克力蛋糕。制作一个香蕉蛋糕需要2个单位的香蕉,250个单位的面粉,75个单位的糖,100个单位的黄油。制作一个巧克力蛋糕需要75个单位的可可粉,200个单位的面粉,150个单位的糖,150个单位的黄油。一个香蕉蛋糕可以卖出400元,而一个巧克力蛋糕可以卖出450元。为了避免蛋糕变质,每种蛋糕至多只能制作100个。
现已知每种原料的数量,求小A至多可以卖出多少元的蛋糕。
【输入】
依次输入面粉、香蕉、糖、黄油、可可粉的数量,每种原料数量均为不超过100000的整数。
【输出】
输出一个整数,表示最多卖出的钱数。
【输入样例】
4000 6 2000 500 500【输出样例】
1700
- #include<bits/stdc++.h>//枚举
- using namespace std;
- int main()
- {
- int mf,xj,t,hy,kkf,xjcake=0,kkcake=0,msum=0,sum=0;
- cin>>mf>>xj>>t>>hy>>kkf;
- for(int i=0;i<=xj/2;i++)//最多的香蕉蛋糕数量
- for(int j=0;j<=kkf/75;j++)//最多的巧克力蛋糕数量
- {
- if((i*250+j*200)<=mf&&(i*75+j*150)<=t&&(i*100+j*150)<=hy&&i<=100&&j<=100)//是否符合原料要求
- {
- sum=i*400+j*450;//money
- if(sum>msum)
- msum=sum;//打擂台
- }
- }
- cout<<msum;
- return 0;
- }
【题目描述】
在一个长度为n(1 < n < 1000)的整数(0至1000之间)序列中,选出两个元素使得它们的和最接近但不超过K(0 <= K < 2000)。保证一定存在不超过K的两元素和。
【输入】
第一行输入一个整数n 第二行输入一个整数K 第三行输入序列,用空格分开
【输出】
最接近但不超过K的和
【输入样例】
4 7 1 2 2 8【输出样例】
4
- #include<bits/stdc++.h>//枚举
- using namespace std;
- int main()
- {
- int n,k,sum,msum=0;//msum表示最接近但不超过K的和
- int s[1002];//存元素
- scanf("%d%d",&n,&k);
- for(int i=1;i<=n;i++)
- scanf("%d",&s[i]);//输入
- for(int i=1;i<=n;i++)
- for(int j=1;j<=n;j++)
- {
- if(i==j)//下角标不可以一样
- continue;
- sum=s[i]+s[j];//现在的和
- if(sum<=k/*不超过K*/&&sum>msum/*比最大值大*/)//合起来就是判断现在的和是不是最接近但不超过K的和
- msum=sum;//最大值赋值给他
- }
- printf("%d",msum);//输出最接近但不超过K的和
- return 0;
- }
【题目描述】
数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。 比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。
【输入】
一个正整数(小于101000)。
【输出】
一个数字,即输入数字的数根。
【输入样例】
24【输出样例】
6
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- int n;//用来存储
- cin>>n;
- int w;//用来计算
- while(n>=10)//不为一位数
- {
- w=n;//n的值赋值给w,让w计算
- n=0;
- while(w!=0)//数位分离
- {
- n+=w%10;//加上每一位的数字
- w/=10;
- }
- }
- cout<<n;//输出一位数
- return 0;
- }
【题目描述】
医院为了方便对患者进行建档和管理,引入了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
- #include<bits/stdc++.h>//这一道题的思路为把九位数分为三个部分,先判断前三位是不是素数,在判断后三位是不是平方数,最后判断有没有13.
- using namespace std;
- bool zs(int n)//判断n是不是素数
- {
- if(n<2) return 0;
- for(int i=2;i*i<=n;i++)
- if(n%i==0)
- return 0;
- return 1;
- }
- bool check(int n)//判断n是不是含有13
- {
- int a=0,b;
- while(n!=0)
- {
- n/=10;
- if(n%100==13)
- return 0;
- }
- return 1;
- }
- int main()
- {
- int m,n,i,cnt=0;
- int a[1010],aa=0,b[1010],bb=0;//aa为素数个数,bb为平方数个数
- scanf("%d%d",&m,&n);
- for(i=101;i<1000;i++)
- {
- if(zs(i)==1)
- {
- a[aa]=i;//如果是,存在a数组里
- aa++;
- }
- }
- bb=31;
- for(int i=1;i<=31;i++)
- b[i]=i*i;
- int shu=0;
- for(i=0;i<aa;i++)//枚举素数
- {
- for(int j=0;j<1000;j++)//枚举中间数
- {
- for(int k=1;k<=bb;k++)//枚举平方数
- {
- shu=a[i]*1000000+j*1000+b[k];//把这个数算出来
- if(shu>=m&&shu<=n&&check(shu))//如果是好的ID号
- cnt++;计数器加1
- }
- }
- }
- printf("%d",cnt);//输出个数
- return 0;
- }
以上就是2022年6月中国电子学会C语言编程考试3级试题
请点赞+关注
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。