一张试卷

目录

[问题 1: 1.时间](#问题 1: 1.时间)

题目描述1

输入1

输出1

样例输入1

样例输出1

提示1

代码1

[问题 2: 超酷的电话号码](#问题 2: 超酷的电话号码)

题目描述2

输入2

输出2

样例输入2

样例输出2

提示2

代码2

[问题 3:3.爸爸的数学题](#问题 3:3.爸爸的数学题)

题目描述3

输入3

输出3

样例输入3

样例输出3

提示3

代码3

[问题 4: 4. 营养膳食](#问题 4: 4. 营养膳食)

题目描述4

输入4

输出4

样例输入4

样例输出4

提示4

代码4


问题 1: 1.时间

题目描述1

时间是最宝贵的,因此,小凯总是以秒来计算,从现在的时刻开始到另一个时刻还有多少时间。

输入1

只有一行,有二个整数t1和t2,分别表示起始时刻和终止的时刻,起始时刻与终止时刻都是整点。

输出1

只有一行,表明有多少秒。

样例输入1
2 3
样例输出1
3600
提示1

【样例说明】

2表明2时,3表明3时,2时与3时之间有1小时,1小时相当于3600秒。

【数据规模】

起始时刻和终止的时刻之间不超过24小时。

判断特殊情况,比如3 2 a就是第一天,b就是第二天。

代码1

#include <bits/stdc++.h>

#define ll long long

using namespace std;

ll a,b;

main() {

cin>>a>>b;

if(a>b) b+=24;

cout<<(b-a)*3600;

}

cpp 复制代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll a,b;
	cin>>a>>b;
	if(a>b) b+=24;
	cout<<(b-a)*3600;
}

问题 2: 超酷的电话号码

题目描述2
输入2

输入一个电话号码,电话号码由数字、大写英文字符或者'-'号组成,电话号码的格式统一为:xxx-xxxx-xxxx的形式。

输出2

输出对应的原号码(号码格式不变)。

样例输入2
1FE-JQTA-DDNN
样例输出2
133-5782-3366
提示2

【样例说明】

1对应数字1,字母A对应数字2,字母DEF对应数字3,J对应数字5,N对应数字6,Q对应数字7,T对应数字8。

死判断

代码2

#include <bits/stdc++.h>

#define ll long long

using namespace std;

ll i;char a[200];

main(){

cin>>a+1;

for(i=1;i<=13;i++){

if(a[i]>='A'&&a[i]<='C') cout<<2;

else if(a[i]>='D'&&a[i]<='F') cout<<3;

else if(a[i]>='G'&&a[i]<='I') cout<<4;

else if(a[i]>='J'&&a[i]<='L') cout<<5;

else if(a[i]>='M'&&a[i]<='O') cout<<6;

else if(a[i]>='P'&&a[i]<='S') cout<<7;

else if(a[i]>='T'&&a[i]<='V') cout<<8;

else if(a[i]>='W'&&a[i]<='Z') cout<<9;

else cout<<a[i];

}

}

cpp 复制代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll i;char a[200];
main(){
    cin>>a+1;
    for(i=1;i<=13;i++){
        if(a[i]>='A'&&a[i]<='C') cout<<2;
        else if(a[i]>='D'&&a[i]<='F') cout<<3;
        else if(a[i]>='G'&&a[i]<='I') cout<<4;
        else if(a[i]>='J'&&a[i]<='L') cout<<5;
        else if(a[i]>='M'&&a[i]<='O') cout<<6;
        else if(a[i]>='P'&&a[i]<='S') cout<<7;
        else if(a[i]>='T'&&a[i]<='V') cout<<8;
        else if(a[i]>='W'&&a[i]<='Z') cout<<9;
        else cout<<a[i];
    }
}

问题 3:3.爸爸的数学题

题目描述3

也许所有的科技迷都对数学情有独钟,小明的爸爸就是一个典型。好在小明和爸爸一样,是一个小版的数学迷。所以,小明和爸爸之间有了某种默契,每当小明有某些计划之外却又在情理之中的请求的时候,爸爸总会用考数学题的方式来决定是否答应。

比如,这一天......此处省略500个字。

于是,爸爸的数学题又神奇地出现了,题目是这个样子的:

现有一个数列x,x0 = 1,xi+1 =(xi * A + xi mod B)mod C。举个例子:当A = 2,B = 2,C = 9时,该数列的第0项x0 = 1,第1项x1 =(x0 * 2 + x0 mod 2)mod 9 = 3,第2项x2 =(x1 * 2 + x1 mod 2)mod 9 = 7,以此类推。

小明需要求出这个数列什么时候出现重复项,并告诉爸爸这一项的标号。

如果你是小明,你能顺利通过考核么?

输入3

输入包括一行,有3个正整数,分别表示A,B,C。

输出3

输出第一次出现重复项的位置,如果答案超过2000000,则输出-1。

样例输入3
2 2 9
样例输出3
4
提示3

【样例说明】

该数列对应的每一项为:1 3 7 6 3 7 6 3 7 6 ......,所以,第一次出现的重复数字是3,是第4项(从0开始编号),输出4。

【数据范围】

对于30%的数据,A <= 105,B <= 105,C <= 105;

对于100%的数据,A <= 109,B <= 109,C <= 109;

代码3

#include<bits/stdc++.h>

#define ll long long

using namespace std;

ll a,b,c,i,mi;

struct no{

int x,id;

}x[2000010];

bool cmp(no q,no h){

if(q.x<h.x) return 1;

else if(q.x==h.x&&q.id<h.id) return 1;

else return 0;

}

main(){

cin>>a>>b>>c;

x[0].x=1;

for(i=1;i<=2000000;i++){

x[i].x=((long long)x[i-1].x*a+x[i-1].x%b)%c;

x[i].id=i;

}

sort(x+1,x+2000000+1,cmp);

mi=2e9;

for(i=1;i<2000000;i++)

if(x[i].x==x[i-1].x)

mi=min(mi,x[i].id);

if(mi==2e9) cout<<-1;

else cout<<mi;

}

cpp 复制代码
#include<bits/stdc++.h>
#define ll long long
using  namespace std;
ll a,b,c,i,mi;
struct no{
	int x,id;
}x[2000010];
bool cmp(no q,no h){
	if(q.x<h.x) return 1;
	else if(q.x==h.x&&q.id<h.id) return 1;
	else return 0;
}
main(){
	cin>>a>>b>>c;
	x[0].x=1;
	for(i=1;i<=2000000;i++){
		x[i].x=((long long)x[i-1].x*a+x[i-1].x%b)%c;
		x[i].id=i;
	}
	sort(x+1,x+2000000+1,cmp);
	mi=2e9;
	for(i=1;i<2000000;i++)
		if(x[i].x==x[i-1].x)
			mi=min(mi,x[i].id);
	if(mi==2e9) cout<<-1;
	else cout<<mi;
}

问题 4: 4. 营养膳食

题目描述4

小明的爸爸是个设备控,最爱的事情就是收集各种各样的智能设备。就在今天早上,爸爸拿来了自己的最新收藏:智能体脂健康秤,据说能测出22项身体数据。于是,小明成了这款智能秤的第一个用户。不测不知道,一测吓一跳,小明的BMI(体脂指数)严重偏低。这下可把爸爸给吓坏了,看着小明瘦弱的小身板,爸爸暗自在心里下了决定,要给小明整一个"超级增肥计划"。

为了增肥,爸爸希望小明能吃到更多的脂肪。然而也不能只吃高脂肪食品,那样的话就会导致缺少其他营养。通过研究发现:真正的营养膳食规定某类食品不宜一次性吃超过若干份。比如就一顿饭来说,肉类不宜吃超过1份,鱼类不宜吃超过1份,蛋类不宜吃超过1份,蔬菜类不宜吃超过2份。小明想要在营养膳食的情况下吃到更多的脂肪,当然他的食量也是有限的。

输入4

输入包括多行:

第一行输入三个正整数n,m,k,表示有n份食品供小明选择,小明一顿最多可以吃m份食品,食品总共分为k类。

第二行包含k个不超过10的正整数,表示每一类食品可以吃的最大份数。

接下来n行,每行包括2个正整数,分别表示该食品的脂肪指数ai和所属的类别bi。

输出4

输出包括一个数字即小明可以吃到的最大脂肪指数和。

样例输入4
6 6 3
3 3 2
15 1
15 2
10 2
15 2
10 2
5 3
样例输出4
60
提示4

【样例说明】

小明可以选择1、2、3、4、6这5份食品,或者选择1、2、4、5、6这五份食品,脂肪数均为60。

【数据范围】

对于100%的数据,n <= 200, m <= 100,k <= 100,ai <= 100,bi <= k。

代码4

#include <bits/stdc++.h>

#pragma GCC optimize("Ofast")

#define ll long long

using namespace std;

ll n,m,k,f[100010],i,s;

struct no{

int x,y;

}a[100010];

bool cmp(no q,no h){

return q.x>h.x;

}

main(){

cin>>n>>m>>k;

for(i=1;i<=k;i++) cin>>f[i];

for(i=1;i<=n;i++) cin>>a[i].x>>a[i].y;

sort(a+1,a+1+n,cmp);

for(i=1;i<=n;i++)

if(f[a[i].y]>0&&m>0)

f[a[i].y]--,m--,s+=a[i].x;

cout<<s;

}

cpp 复制代码
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define ll long long
using namespace std;
ll n,m,k,f[100010],i,s;
struct no{
	int x,y;
}a[100010];
bool cmp(no q,no h){
	return q.x>h.x;
}
main(){
	cin>>n>>m>>k;
	for(i=1;i<=k;i++) cin>>f[i];
	for(i=1;i<=n;i++) cin>>a[i].x>>a[i].y;
	sort(a+1,a+1+n,cmp);
	for(i=1;i<=n;i++)
		if(f[a[i].y]>0&&m>0)
			f[a[i].y]--,m--,s+=a[i].x;
	cout<<s; 
}
相关推荐
雨中rain1 分钟前
Linux -- 从抢票逻辑理解线程互斥
linux·运维·c++
就爱学编程3 分钟前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
学术头条8 分钟前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
Schwertlilien40 分钟前
图像处理-Ch4-频率域处理
算法
IT猿手1 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·深度学习·算法·机器学习·matlab·多目标算法
__lost1 小时前
MATLAB直接推导函数的导函数和积分形式(具体方法和用例)
数学·算法·matlab·微积分·高等数学
thesky1234561 小时前
活着就好20241224
学习·算法
ALISHENGYA1 小时前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战项目二)
数据结构·c++·算法
guogaocai1231 小时前
连续自成核退火热分级(SSA)技术表征共聚聚丙烯(PP)分子链结构
算法
arong_xu1 小时前
现代C++锁介绍
c++·多线程·mutex