目录
问题 1: 1.时间
题目描述1
输入1
输出1
样例输入1
样例输出1
提示1
代码1
问题 2: 超酷的电话号码
题目描述2
输入2
输出2
样例输入2
样例输出2
提示2
代码2
问题 3:3.爸爸的数学题
题目描述3
输入3
输出3
样例输入3
样例输出3
提示3
代码3
问题 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;
}
#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];
}
}
#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;
}
#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;
}
#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;
}