第1题 勇士 时限:1s 空间:256m
小明在学习信息学编程时,设计了一款游戏:初始时勇士的能力值为 n,通往城堡的路上有m个挑战者,第i个挑战者的能力值为a[i]。勇士只能按照顺序依次迎战挑战者。当勇士的能力值大于等于挑战者时,视为勇士胜利,可以继续迎战下一位,否则视为失败,游戏直接结束。现在请你找出勇士在失败或全部通关后,他击败的挑战者里最强那位的能力值是多少。若一个都无法击败,则输出0。
输入格式
第一行,两个整数 n和m。
第二行, m个整数,第i个整数为第i个挑战者的能力值a[i]。
输出格式
输出一个整数,为勇士在失败或全部通关后,他击败的挑战者里最强那位的能力值。
输入/输出例子1
输入:
100 4
98 77 123 56
输出:
98
输入/输出例子2
输入:
130 4
98 77 123 56
输出:
123
样例解释
【样例说明】
样例 1中,勇士的能力值是100,共有4位挑战者,能力值分别为98、77、123、56。勇士能够击败第1、2位挑战者,但无法击败第3位,因此在他击败的挑战者里,最强那位的能力值是98。
样例 2中,勇士的能力值是130,共有4位挑战者,能力值分别为98、77、123、56。勇士能够击败所有的挑战者,因此在他击败的挑战者里,最强那位的能力值是123。
【数据范围】
对于 100%的数据,1≤n,m,a[i]≤10000。
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[10005],maxx=0;
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=m;i++){
scanf("%lld",&a[i]);
if(n>=a[i]){
if(a[i]>maxx)maxx=a[i];
}
else break;
}
printf("%lld",maxx);
return 0;
}
第2题 体重 时限:1s 空间:256m
小 A 一觉醒来发现时空发生了穿越,来到了秦始皇一统天下后的时代。
小 A 想进城逛逛,但是守城人要求必须报上自己的身高体重。 但是当时的秤是十六两一斤,小A只知道自己用十两一斤的秤称重时的斤两。
请你帮他算算应该如何上报数据。
输入格式
输入十两一斤的重量数,输入有两行。
第一行是斤数。 第二行是两数。
输出格式
输出对应十六两一斤秤的重量数,输出有两行。
第一行是斤数。
第二行是两数。
输入/输出例子1
输入:
2
1
输出:
1
5
输入/输出例子2
输入:
10
9
输出:
6
13
样例解释
样例 1 说明
在十两一斤的称重下,有 2 斤 1 两,共 21 两。
因此换算为十六两一斤的称重下,有 1 斤 5 两。
数据范围
对于 100% 的数据,满足 读入的 斤数,在 [0,1000] 的范围,读入的两数,在 [0,9] 的范围。
#include<bits/stdc++.h>
using namespace std;
long long n,m,shi=0,shiliujing=0,shiliuliang=0;
int main(){
scanf("%lld%lld",&n,&m);
shi=n*10+m;
shiliujing=shi/16;
shiliuliang=shi%16;
printf("%lld\n%lld",shiliujing,shiliuliang);
return 0;
}
第3题 打怪兽 时限:5s 空间:256m
有 3只怪兽,第i只怪兽的能量是a[i]。
你要消灭这 3只怪兽,需要进行3轮。
第 1轮,你可以选择任何一只怪兽(不妨假设你选了第i只怪兽),然后消灭它,代价是0元。
第 2轮,你从剩下的两只怪兽中选择任意的一只怪兽(不妨假设你选了第j只怪兽),代价是abs(a[i]-a[j])。
第 3轮,消灭剩下的那只怪兽(不妨假设是第k只怪兽),代价是abs(a[j]-a[k])。
你的目标是最小化总代价。
输入格式
3个整数, a[1],a[2],a[3], 1<=a[1],a[2],a[3]<=100000。
输出格式
一个整数。
输入/输出例子1
输入:
1 6 3
输出:
5
样例解释
abs(a[i]-a[j]) 指(a[i]-a[j])的绝对值,即较大值与较小值的差,如abs(2,5)=3.
#include<bits/stdc++.h>
using namespace std;
long long n=3,a[4],s=0;
int main(){
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
sort(a+1,a+n+1);
s=abs(a[3]-a[2])+abs(a[2]-a[1]);
printf("%lld",s);
return 0;
}
第4题 集卡册 时限:1s 空间:256m
小胡喜欢收集奥特曼卡片,对每个奥特曼的技能,身高,体重都如数家珍。
为了能把这些卡片带给小伙伴们炫耀,他还特地买了一本集卡册。集卡册一共能装 16 张卡片,每次出门他都会装满这本集卡册,但是有时粗心的小胡会放入两张相同的卡片。
如下所示:
上面每个大写字母代表一种卡片,其中第一张和第五张相同。
输入格式
输入 16个连续的大写字母,代表放入的 16 张卡片的种类。
输出格式
如果 16 张卡片各不相同,输出 different 。
如果有 2张卡片的种类一样,以由小到大的顺序输出 2 张相同卡片的编号, 2 个位置序号之间以空格隔开。
输入/输出例子1
输入:
BCDEGHJKLBAUIOPQ
输出:
1 10
输入/输出例子2
输入:
ABCDEFGHIJKLMNOP
输出:different
样例解释
【样例 1 解释】
十六张卡片中第一张和第十张都是 B,所以答案是 1 10。
【数据说明】
相同的卡片 最多只会有一种 ,且 最多只有 2 张 。
#include<bits/stdc++.h>
using namespace std;
string s;
long long s1=0,a[3];
bool f=0;
int main(){
cin>>s;
for(long long i=0;i<s.size();i++){
for(long long j=i+1;j<s.size();j++){
if(s[i]!=s[j]){
f=1;
}
else {
cout<<i+1<<" "<<j+1;
return 0;
}
}
}
if(f)printf("different");
return 0;
}
第5题 有趣的横幅 时限:1s 空间:256m
小胡准备做一个广告横幅为公司宣传。为了让所有人都印象深刻,所以他把横幅做的特别长,但是他想不出那么长的广告语,所以他决定把公司名称 DFBY 不断重复循环。所以最终呈现给大家的就是一个无限循环的横幅: DFBYDFBYDFBYDFBY... 。
现在告诉我们一个整数 x, 请问这个横幅上的第 x 个字符是哪个字母?
输入格式
输入一个整数 x。
输出格式
输出横幅的第 x个字母。
输入/输出例子1
输入:
5
输出:
D
输入/输出例子2
输入:
12
输出:
Y
样例解释
【数据范围】
对于 100%的数据, 1≤x≤1,000,000,000 。
#include<bits/stdc++.h>
using namespace std;
long long n;
int main(){
scanf("%lld",&n);
if(n%4==1){
cout<<"D";
return 0;
}
else if(n%4==2){
cout<<"F";
return 0;
}
else if(n%4==3){
cout<<"B";
return 0;
}
else if(n%4==0){
cout<<"Y";
return 0;
}
return 0;
}
第6题 数字谜题 时限:1s 空间:256m
乐乐的《趣味数学》书上有这样一个数学谜题:
有 N个整数,请按下列步骤寻找符合要求的数字:
将每个数的每一位拆出来后,统计出一共有多少位数字的值除以 3 的余数为 0;
统计结束后,如果统计的结果是偶数,那么这个数就是符合要求的数字;
请将所有符合要求的数字按照从小到大的顺序排序后输出;
乐乐觉得一个一个找实在是太慢了,他决定请学过编程的你帮忙写一个程序,帮他快速的找出答案。
输入格式
第 1 行读入一个整数 N,代表要读入数字的数量;
第 2 行读入 N 个整数,用空格隔开;
输出格式
输出若干行,每行一个整数,按照从小到大的顺序,输出所有符合要求的数字。
输入/输出例子1
输入:
8
138 290 3589 230 62 882 981 12000
输出:
230
290
882
3589
输入/输出例子2
输入:
10
16716 14533 2394 29326 26186 31867 10090 22792 31775 15732
输出:
2394
10090
14533
16716
26186
31867
样例解释
样例 1 解释
读入的数据中, 290、3589、230、882,均是满足条件的整数,以 290为例:数字 290中,9和 0除以 3余数都为 0,因此 290各个位中有 2 位数除以 3 的余数为 0,符合题目要求的统计结果为偶数的要求。
数据范围
对于 100%的数据 1≤N≤10000,第二行读入的每个数 Ai所在的范围为 1≤Ai≤1000000。
#include<bits/stdc++.h>
using namespace std;
long long n,a[10005],sum=0,b[10005],t,ans;
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
t=a[i];
while(t>0){
if(t%10%3==0)ans++;
t/=10;
}
if(ans%2==0){
sum++;
b[sum]=a[i];
}
ans=0;
}
sort(b+1,b+sum+1);
for(int i=1;i<=sum;i++){
printf("%lld\n",b[i]);
}
return 0;
}
第7题 鼠鼠的薪水 时限:1s 空间:256m
浪浪国的鼠鼠阿胡是一只新上任的公务鼠,它的职责是看管粮仓。
鼠鼠它每天都会吃掉 1 根玉米,每个星期一会拿到 7 根玉米作为薪水。但是贪心的鼠鼠怎么会就此满足呢,所以每个星期二它还会偷偷往家拿 7 根玉米。
虽然鼠鼠非常精明,但是纸是包不住火的,终究还是东窗事发了。鼠鼠被抄家时,从它的被窝里找出了 n 根玉米,已知它上任前家里一共有 10 根玉米,请问 从星期三上任到被捕入狱 ,它一共当了几天公务鼠呢?
请注意:鼠鼠被抓的当天,还没有来得及享受美味的玉米,被抓的当天不能算在它作为公务鼠的统计天数内。
输入格式
输入一个整数 n ,表示剩下的玉米数量。
输出格式
输出一个整数,表示当公务鼠的天数。
输入/输出例子1
输入:
17
输出:
7
输入/输出例子2
输入:
23
输出:
15
样例解释
【样例 1解释】
原先有 10 根玉米,周三作为第一天。
第一天吃完还剩 9根。
第二天吃完还剩 8 根。
依次类推,到第五天吃完,还剩 5 根。
第六天因为是周一,发了 7 根,吃了 1 根,所以还剩 11 根。
第七天是周二,偷了 7 根,吃了 1 根,所以还剩 17 根。
第八天被抓了,所以实际只当了 7 天的公务鼠。
【数据范围】
5≤n≤5000。
#include<bits/stdc++.h>
using namespace std;
long long n,s=10,ans=0;
int main(){
scanf("%lld",&n);
for(long long i=3;;i++){
if(i==8)i=1;
if(i>=1&&i<3)s+=6,ans++;
if(i>=3&&i<=7)s--,ans++;
if(s==n){
cout<<ans;
return 0;
}
}
return 0;
}
第8题 欢乐的跳 时限:1s 空间:256m
一个 n个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了 [1,n−1]之间的所有整数,则称之符合“欢乐的跳”,如数组 {1,4,2,3}符合“欢乐的跳”,因为差的绝对值分别为:3,2,1。
给定一个数组,你的任务是判断该数组是否符合 “欢乐的跳”。
输入格式
每组测试数据第一行以一个整数 n(1≤n≤1000)开始,接下来n个空格隔开的在 [−108 ,10 8 ]之间的整数。
输出格式
对于每组测试数据,输出一行若该数组符合 “欢乐的跳”则输出 Jolly ,否则输出 Not jolly 。
输入/输出例子1
输入:
4 1 4 2 3
输出:
Jolly
输入/输出例子2
输入:
5 1 4 2 -1 6
输出:
Not jolly
#include<bits/stdc++.h>
using namespace std;
int a[1005],b[1005];
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<n;i++){
b[i]=abs(a[i]-a[i+1]);
}
sort(b+1,b+n);
for(int i=1;i<n;i++){
if(b[i]!=i){
printf("Not jolly");
return 0;
}
}
printf("Jolly");
return 0;
}