本文主要是介绍3级考题(3)(c++),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#204. 鸡兔同笼[2]
题目描述
一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外)。
已经知道了笼子里面脚的总数 a,问笼子里面至少有多少只动物,至多有多少只动物。
输入格式
一行,一个正整数 a 。
输出格式
一行,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。
如果没有满足要求的答案,则输出两个 0,中间用一个空格分开。
样例
输入样例
复制20
输出样例
复制5 10
#include <bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;if(n%2==1){cout<<"0 0";return 0; }if(n%4==0){cout<<n/4<<" ";}else if(n%2==0){int t = n-2;cout<<t/4+1<<" ";}cout<<n/2;return 0;
}
#4241. 「2022.12三级」猴子吃桃
题目描述
海滩上有一堆桃子, 只猴子来分。第一只猴子把这堆桃子平均分为 份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子接着把剩下的桃子平均分成 份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第三、第四、……,第 只猴子仍是最终剩下的桃子分成 份,扔掉多了的一个,并拿走一份。
编写程序,输入猴子的数量 ,输出海滩上最少的桃子数,使得每只猴子都可吃到桃子。
输入格式
一个整数 。
输出格式
输出当猴子数量为 时海滩上最少的桃子数。结果保证在 int 型范围内。
样例
样例输入
复制2
样例输出
复制7
#include <bits/stdc++.h>
using namespace std;
int main()
{long long n;cin>>n;long long sum = 1;for(int i = 0;i<n;i++){sum = sum+sum+1;}cout<<sum;return 0;
}a
#1146. 上台阶
题目描述
楼梯有 n(71 > n > 0) 阶台阶,上楼时可以一步上 阶,也可以一步上 阶,也可以一步上 阶,编程计算共有多少种不同的走法。
输入格式
输入的每一行包括一组测试数据,即为台阶数n。最后一行为0,表示测试结束。
输出格式
每一行输出对应一行输入的结果,即为走法的数目。
样例
样例输入
复制1
2
3
4
0
样例输出
复制1
2
4
7
#include <bits/stdc++.h>
using namespace std;
int main()
{int n;long long a[100] = {1,2,4};for(int i = 3;i<71;i++) { a[i] = a[i-1]+a[i-2]+a[i-3];}while (true){cin>>n;if(n==0){break;}cout<<a[n-1]<<endl;}return 0;
}
#4173. 课程冲突
题目描述
小 A 修了 n 门课程, 第 i 门课程是从第 ai 天一直上到第 bi 天。
定义两门课程的冲突程度为 : 有几天是这两门课程都要上的。
例如 a1=1,b1=3,a2=2,b2=4 时, 这两门课的冲突程度为 2。
现在你需要求的是这 n 门课中冲突程度最大的两门课的冲突程度。
输入格式
第一行一个正整数 n 表示课程数量。 接下来 n 行,每行两个正整数 ai,bi。 2 ≤ n≤ 1000, 1 ≤ ai ≤ bi ≤ 1000。
输出格式
输出一个整数表示最大的冲突程度。
样例
样例输入
复制3
1 3
2 4
5 5
样例输出
复制2
#include <bits/stdc++.h>
using namespace std;
int a[1010];
int b[1010];
int main()
{int n;cin>>n;for(int i = 0;i<n;i++){cin>>a[i];cin>>b[i];}int ma = -99999;for(int i = 0;i<n-1;i++){for(int j = i+1;j<n;j++){int s = min(b[i],b[j])-max(a[i],a[j])+1;ma = max(ma,s);}}cout<<ma;return 0;
}
#4232. 「2022.09三级」 最长下坡
题目描述
小明天天沿着未名湖环湖路跑,有时候也觉得蛮累。
累的时候跑下坡就很开心。小明想知道最长的一段下坡有多长。
环湖路是个圆形,周长n米。每隔一米测一下路面高度,两个测高点之间的高度是单调变化或不变的。
问最长的一段下坡有多少米长。小明只能顺时针跑。下坡必须高度单调减少。
输入格式
第一行是整数n,表示环湖路一共n米长(2<=n<=100)。
第二行是n个整数,每个整数范围[0,10000],按顺时针顺序给出了n个测高点的高度。
输出格式
最长下坡路段的长度。
样例
样例输入 1
复制5
2 1 5 6 3
样例输出 1
复制3
样例解释 1 最长的一段下坡为6 3 2 1,有4个整数(表示4个测高点),但是这段路的长度为3。
样例输入 2
复制5
2 1 5 4 3
样例输出 2
复制4
样例输入 3
复制4
1 1 1 1
样例输出 3
复制0
#include <bits/stdc++.h>
#include <string.h>
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{int n;cin>>n;int a[110] = {0};for(int i = 0;i<n;i++){cin>>a[i];}int ma = 0;int cnt = 0;int cnt2 = 0;int cnt3 = 0;bool f = false;for(int i = 0;i<n-1;i++){if(a[i]>a[i+1]){cnt++;if(i==n-2){f = true;}}else{cnt3++;if(cnt3==1){cnt2 = cnt;}ma = max(ma,cnt);cnt = 0;}}if(f==true){cnt = cnt+cnt2+1;ma = max(ma,cnt);}cout<<ma;return 0;
}
#6147. 放苹果
题目描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
输入格式
第一行是测试数据的数目t(0<=t<=20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
输出格式
对输入的每组数据M和N,用一行输出相应的K。
样例
样例输入
复制1
7 3
样例输出
复制8
#include <bits/stdc++.h>
using namespace std;
int aaa(int,int);
int main()
{int i;cin>>i;int m[50],n[50];for(int j = 0;j<i;j++){cin>>m[j]>>n[j];}for(int j = 0;j<i;j++){cout<<aaa(m[j],n[j])<<endl;}return 0;
}
int aaa(int m,int n)
{if(m==1||n==1||m==0||n==0) return 1;if(m<0) return 0;if(m<n) return m;return aaa(m-n,n)+aaa(m,n-1);
}
#4205. 「2022.06三级」制作蛋糕
小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;int sum = 0;cin>>mf>>xj>>t>>hy>>kkf;int ma = -99999;for(int i = 0;i<=min(min(mf/250,xj/2),min(t/75,hy/100));i++){int mf1 = i*250;int xj1 = i*2;int t1 = i*75;int hy1 = i*100;for(int j = 0;j<=min(min((mf-mf1)/200,kkf/75),min((t-t1)/150,(hy-hy1)/150));j++){int mf2 = j*200;int kkf2 = j*75;int t2 = j*150;int hy2 = j*150;if(mf2+mf1<=mf&&kkf2<=kkf&&xj1<=xj&&t1+t2<=t&&hy1+hy2<=hy){ma = max(ma,i*400+j*450);}}}cout<<ma;return 0;
}
#4206. 找和最接近但不超过K的两个元素
题目描述
在一个长度为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;cin>>n>>k;int a[1010];int ma = -99999;for(int i = 0;i<n-1;i++){cin>>a[i];}for(int i = 0;i<n-1;i++){for(int j = i+1;j<n;j++){int sum = a[i]+a[j];if(sum<=k){ma = max(ma,sum);}}}cout<<ma;return 0;
}
#4207. 「2022.06三级」数根
题目描述
数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。 比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。
输入格式
一个正整数(小于 )。
输出格式
一个数字,即输入数字的数根。
样例
样例输入
复制24
样例输出
复制6
#include <bits/stdc++.h>
using namespace std;
int aaa(int);
int main()
{int n;cin>>n;cout<<aaa(n);return 0;
}
int aaa(int n)
{if(n/10==0) return n;int sum = 0;int t = n;while(t!=0){sum = sum+t%10;t = t/10;}return aaa(sum);
}
#1145. 和数
题目描述
给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列 , 这个问题的答案就是 , 因为 。
输入格式
共两行,第一行是数列中数的个数 ( ),第二行是由 个不大于 的正整数组成的数列,相邻两个整数之间用单个空格隔开。
输出格式
一个整数,即数列中等于其他两个数之和的数的个数。
样例
样例输入
复制4
1 2 3 4
样例输出
复制2
数据范围与提示
来源于 poj
提示
数列中有相同的数字只算一次。
#include <bits/stdc++.h>
using namespace std;
int b[1000000];
int lb = 0;
int main()
{int n;cin>>n;int a[110];int cnt = 0;for(int i = 0;i<n;i++){cin>>a[i];}for(int i = 0;i<n;i++){for(int j = i;j<n;j++){for(int k = 0;k<n;k++){if(a[i]+a[j]==a[k]&&i!=j&&j!=k&&i!=k){bool f = true;for(int l = 0;l<lb;l++){if(b[l]==a[k]){f = false;break;}}if(f==true){cnt++;b[lb] = a[k];lb++;}}}}}cout<<cnt;return 0;
}
#6211. 生理周期
题目描述
人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。 每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。
因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。
对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。
你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。
例如:给定时间为10,下次出现三个高峰同天的时间是12,则输出2(注意这里不是3)。
输入格式
一行,包含四个整数:p, e, i和d,相邻两个整数之间用单个空格隔开。 p, e, i分别表示体力、情感和智力高峰出现的时间(时间从当年的第一天开始计算)。d 是给定的时间,可能小于p, e, 或 i。 所有给定时间是非负的并且小于等于365, 所求的时间小于等于21252。
输出格式
一个整数,即从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。
样例
样例输入
复制4 5 6 7
样例输出
复制16994
#include <bits/stdc++.h>
using namespace std;
int main()
{int p,e,i,d;cin>>p>>e>>i>>d;int a = 1,b = 1,c = 1;while(a*23+p<=21252+d){b = 1;while(b*28+p<=21252+d){c = 1;while(c*33+p<=21252+d){if(a*23+p==b*28+e&&b*28+e==i+c*33){cout<<a*23+p-d;return 0;}c++;}b++;c = 1;}a++;b = 1;c = 1;}return 0;
}
#6171. 分解因数
题目描述
给出一个正整数 a,要求分解成若干个正整数的乘积,即 a=a1×a2×a3×...×an,并且 1<a1≤a2≤a3≤...≤an, 问这样的分解的种数有多少。
注意到a=a也是一种分解。
输入格式
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1<a<32768)。
输出格式
行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数。
样例
样例输入
复制2
2
20
样例输出
复制1
4
#include <bits/stdc++.h>
using namespace std;
int aaa(int,int,int);
int main()
{int n;cin>>n;int a[200];for(int i = 0;i<n;i++){cin>>a[i];}for(int i = 0;i<n;i++){cout<<aaa(a[i],2,0)<<endl;}return 0;
}
int aaa(int n,int k,int cnt)
{if(n==1){cnt++;return cnt;}for(int i = k;i<=n;i++){if(n%i==0){cnt = cnt+aaa(n/i,i,0);}}return cnt;
}
这篇关于3级考题(3)(c++)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!