3级考题(3)(c++)

2024-03-17 21:44
文章标签 c++ 考题

本文主要是介绍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++)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/820261

相关文章

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

c++的初始化列表与const成员

初始化列表与const成员 const成员 使用const修饰的类、结构、联合的成员变量,在类对象创建完成前一定要初始化。 不能在构造函数中初始化const成员,因为执行构造函数时,类对象已经创建完成,只有类对象创建完成才能调用成员函数,构造函数虽然特殊但也是成员函数。 在定义const成员时进行初始化,该语法只有在C11语法标准下才支持。 初始化列表 在构造函数小括号后面,主要用于给

2024/9/8 c++ smart

1.通过自己编写的class来实现unique_ptr指针的功能 #include <iostream> using namespace std; template<class T> class unique_ptr { public:         //无参构造函数         unique_ptr();         //有参构造函数         unique_ptr(