第一题:最高分姓名 (name)
[问题描述]
学校给学信息学的同学举办一次小测试,现给出参与测试的同学姓名和分数,老师想表扬最高分的同学,请你把最高分的学生姓名输出来(最高分唯一)
[输入格式]
输入有n+1行, 第1行为1个正整数,表示数的个数:N (1到100之间的整数) 后N行有N个姓名(字符串)和分数(0到500之间的整数),用空格隔开
[输出格式]
最高分姓名
[样例输入]
2
wangdada 100
lixiaoxiao 99
[例输出]
wangdada
#include
#include
using namespace std;
struct student{string name;int score;
};
int comp(student a,student b){return a.score>b.score;
}
int main(){student stu[101];int n;cin>>n;for(int i=0;i>stu[i].name>>stu[i].score;}sort(stu,stu+n,comp);cout<
第二题:颠倒的数字(numbers)
[问题描述] 一些数字可以颠倒过来看,例如0、1、8颠倒过来还是本身,6颠倒过来是9,9颠倒过来看还是6.其他数字颠倒过来都不构成数字。类似的,一些多位数也可以颠倒过来看,比如106颠倒过来是901,颠倒的数字就是原数字。假设这个数字只由n位数字组成(n为整数,3<=n<=210),每一位都可以取0到9。请判断m个数字是不是颠倒后还是不是原数,还是原数就输出1,不是原数输出0
[输入格式]
m+1行,第一行一个整数m,m为int类型范围 后面m行整数,每一个整数占一行
[输出格式]
输出m行,每行不是1就是0
[样例输入]
2
1234
88888
[样例输出]
0
1
#include
using namespace std;
int main(){int m;cin>>m;long long a[m];for(int i=0;i>a[i];}for(int i=0;i
第三题:找单词游戏 (words)
[问题描述] 如何快速找到一行句子里最长和最短的单词,输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字符构成,单词间的间隔可能是多个空格、句号和逗号,试输出第1个最长的单词和第1个最短单词。
[输入格式]
一行句子。
[输出格式]
第1行,第一个最长的单词.
第2行,第一个最短的单词。
[样例输入]
I love Hefei,I love learning Programming.
[输出]
Programming
I
#include
using namespace std;
int main()
{char a[20000];cin.getline(a,200000);//gets(a); //输入数组int n=strlen(a); //计算长度int t=0;int max1,min1,max2,min2,maxn=0,minn=100; //1和2分别为起始位置和结束位置,//带n的计算长度 a[n]=' '; //在最后一个单词后加空格,否则单词无法计算 for(int i=0; i<=n; i++) //枚举{if(a[i]!=' ' && a[i]!=','&&a[i]!='.') //如果是单词t++; //计数器加一else if(t>0) //否则{if(t>maxn) //如果大于最大{maxn=t; //计算长度max1=i-t; //起始位置max2=i-1; //结束位置}if(t
第四题:排队预登记 (line)
[问题描述] 排队是件头疼的事,在社区中登记信息有的时候需要排一个很长的队,但是其实每个人的优先级都不一样,比如我们可以采用预登记的方式,提前摸排人员情况,让年纪大的先排队,体现人文关怀。现在将预登记的人员按照以下原则排出的先后顺序:
1.老年人(年龄>= 60岁)比非老年人优先排队。
2.老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
3.非老年人按登记的先后顺序排队。
4.残疾人不论年纪大小,一律上门做登记,不参与排队。
[输入格式]
第1行,输入一个小于100的正整数,表示个数; 后面按照登记的先后顺序,每行输入一个人的信息,包括:一个长度小于10的字符串表示人的ID(每个人的ID各不相同且只含数字和字母),一个整数表示人的年龄,另一个整数表示是否是残疾人,是为1,否为0,中间用单个空格隔开。
[输出格式]
按排好的顺序输出人的ID,每行一个
[样例输入]
6
21075 40 0
14003 15 0
10158 67 0
14658 57 1
21033 75 0
12012 30 0
[样例输出]
21033
10158
21075
14003
12012
#include
#include
using namespace std;
struct people{string id;int age;int iscanji;
};
int comp(people a,people b){return a.age>b.age;
}
int main(){people p[101];people p1[101];//老年人 people p2[101];//非老年人 int n,j=0,k=0;cin>>n;for(int i=0;i>p[i].id>>p[i].age>>p[i].iscanji;if(p[i].iscanji==0&&p[i].age>=60){p1[j++]=p[i];}else if(p[i].iscanji==0&&p[i].age<60){p2[k++]=p[i];}}sort(p1,p1+j,comp);for(int i=0;i
[问题描述]
牛牛家有一个林场,现有 条木材,每条木材的长度已知且均为正整数。木材可以以任意正整数长度切割,但不可以连接。假设木材直径都一致,现有卡车可装m条木材,但是卡车长度有限,现在要从这些木材中切割出 m 条长度相同的木材,为经济效益最大化,应该选择多长的卡车,求这些木材的最大长度是多少。
[输入格式]
第一行是一个不超过 100的正整数 n。
第二行是 n个不超过10的6次方的正整数,表示每条材的长度。
第三行是一个不超过10的8次方的正整数 m。
[输出格式]
绳段的最大长度,若无法切割,输出“Failed”
[样例输入]
3
30 20 55
4
[样例输出]
20
#include
using namespace std;
int a[100010];
int main()
{int n,m,l=0,r=100000001;cin>>n;for (int i=1; i<=n; ++i)cin>>a[i];cin>>m;while(r-l>1){int mid=(l+r)/2;int sum = 0;for (int i=1; i<=n; ++i)sum += a[i]/mid;if(sum>=m) l=mid;else r=mid;}cout<
上一篇:Vue学习笔记(9)
下一篇:Web前端开发--自用