以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。 输入格式 输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。 输出格式 根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。 输入样例1 1988 4 输出样例1 25 2013 输入样例2 1 2 输出样例2 0 0001
从y年枚举到3000年,若年份不足4位数补全到四位数求出不同数字个数,若个数满足==n,则输出年份和年龄.
#include<iostream> #include<string.h> using namespace std; //返回该年不同的数字个数,若年份不足4位,则必有0 int returnDf(int year) { int temp[10],dfSize=0; memset(temp,0,sizeof(temp)); if(year<1000) temp[0]=1; while(year>=10) { temp[year]++; year=year/10; } temp[year]++; for(int i=0;i<=9;i++) if(temp[i]!=0) dfSize++; return dfSize; } int main() { int y,n,i,judge[]={10,100,1000,10000}; cin>>y>>n; for(i=y;i<=9999;i++) { if(returnDf(i)==n) break; } cout<<i-y<<" "; //判断位数,按情况补0打印 for(int j=0;j<=3;j++) { if(i<judge[j]) { for(int k=0;k<3-j;k++) cout<<'0'; break; } } cout<<i<<endl; return 0; }
微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。 输入格式 输入在第一行给出一个正整数N(<=1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F1 … FK”,其中 1<=K<=10,Fi(i=1, …, K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。 输出格式 统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。 输入样例 4 3 889 233 2 5 100 3 233 2 73 4 3 73 889 2 2 233 123 输出样例 233 3
在输入数字的时候用一个一维数组统计出现次数。
#include<iostream> #include<string.h> using namespace std; int main() { int n,ans[1001],temp,count; memset(ans,0,sizeof(ans)); cin>>n; //统计出现次数 for(int i=0;i<n;i++) { cin>>count; for(int j=0;j<count;j++) { cin>>temp; ans[temp]++; } } //从最大数开始找出现次数最多的数字 int Max=-1,num; for(int i=1000;i>0;i--) { if(ans[i]>Max) { Max=ans[i]; num=i; } } cout<<num<<" "<<Max; return 0; }
以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。 输入格式 输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点“.”标志输入的结束,这个符号不算在点赞名单里。 输出格式 根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner…”;若只有A没有B,则输出“A is the only one for you…”;若连A都没有,则输出“Momo… No one is for you …”。 输入样例1 GaoXZh Magi Einst Quark LaoLao FatMouse ZhaShen fantacy latesum SenSen QuanQuan whatever whenever Potaty hahaha . 输出样例1 Magi and Potaty are inviting you to dinner… 输入样例2 LaoLao FatMouse whoever . 输出样例2 FatMouse is the only one for you… 输入样例3 LaoLao . 输出样例3 Momo… No one is for you …
如题分三种情况,①2和14都没 ②只有2 ③2和4都存在
#include<iostream> using namespace std; int main() { int key=1; char name[1000][11]; //循环输入直到遇到'.' while(cin>>name[key]) { if(name[key][0]=='.') break; key++; } //按名字个数分类讨论 if(key<=2) cout<<"Momo... No one is for you..."<<endl; else if(key<=14) cout<<name[2]<<" is the only one for you..."<<endl; else cout<<name[2]<<" and "<<name[14]<<" are inviting you to dinner..."<<endl; return 0; }
看我没骗你吧 —— 这是一道你可以在10秒内完成的题:给定两个绝对值不超过100的整数A和B,输出A乘以B的值。 输入格式 输入在第一行给出两个整数A和B(-100 <= A, B, <= 100),数字间以空格分隔。 输出格式 在一行中输出A乘以B的值。 输入样例 -8 13 输出样例 -104
按照题意输出a∗ba∗b的值。
#include<iostream> using namespace std; int main() { int A,B; cin>>A>>B; cout<<A*B<<endl; return 0; }
真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。 输入格式: 输入在第一行给出两个整数A和B(-100 <= A, B, <= 100),数字间以空格分隔。 输出格式: 在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为“Error”。输出的商应保留小数点后2位。 输入样例1 -1 2 输出样例1 -1/2=-0.50 输入样例2 1 -3 输出样例2 1/(-3)=-0.33 输入样例3 5 0 输出样例3 5/0=Error
如题
#include<iostream> #include<iomanip> using namespace std; int main() { double A,B; cin>>A>>B; if(B>0) cout<<A<<"/"<<B<<"="<<fixed<<setprecision(2)<<A/B<<endl; else if(B==0) cout<<A<<"/"<<B<<"=Error"<<endl; else cout<<A<<"/("<<B<<")"<<"="<<fixed<<setprecision(2)<<A/B<<endl; return 0; }
题目链接
这道超级简单的题目没有任何输入。 你只需要在第一行中输出程序员钦定名言“Hello World”,并且在第二行中输出更新版的“Hello New World”就可以了。
exm
#include<iostream> using namespace std; int main() { cout<<"Hello World"<<endl <<"Hello New World"<<endl; return 0; }
题目链接
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。 输入格式 输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。 输出格式 按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个) 输入样例 4 This is a test case 输出样例 asa T st ih e tsi ce s
先行优先把输入的值赋值到一个二维矩阵,每行n个字符,随后翻转矩阵输出
#include<iostream> #include<string.h> using namespace std; int main() { char p[1000],ans[100][1000],ch; int n,len=0,key=0; memset(ans,' ',sizeof(ans)); cin>>n; getchar(); //忽略本次输入的回车 while((ch=getchar())!='\n') p[len++]=ch; //按照每行n个字符赋值给ans二维数组 int row=0; while(key<len) { for(int i=0;i<n;i++) { if(key>=len) break; ans[row][i]=p[key++]; } row++; } //翻转输出矩阵的字符 for(int i=0;i<n;i++) { for(int j=row-1;j>=0;j--) cout<<ans[j][i]; cout<<endl; } return 0; }
题目链接
专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09=(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。 下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。 输入格式 输入第一行给出正整数N(<=10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。 输出格式 对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。 输入样例 2 M 1.75 F 1.8 输出样例 1.61 1.96
男=女*1.09
#include<iostream> #include<iomanip> using namespace std; int main() { int n; double high; char sex; cin>>n; for(int i=0;i<n;i++) { cin>>sex>>high; //按照性别选择式子,注意保留两位小数 switch(sex) { case 'M': cout<<fixed<<setprecision(2)<<high/1.09<<endl; break; case 'F': cout<<fixed<<setprecision(2)<<high*1.09<<endl; } } return 0; }
社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。 输入格式: 输入第一行给出一个正整数N(2 <= N <= 105)。随后一行给出N个正整数,分别是每个人的活跃度,其间以空格分隔。题目保证这些数字以及它们的和都不会超过231。 输出格式: 按下列格式输出
Outgoing #: N1 Introverted #: N2 Diff = N3 其中 N1 是外向型人的个数;N2 是内向型人的个数;N3 是两群人总活跃度之差的绝对值。 输入样例1 10 23 8 10 99 46 2333 46 1 666 555 输出样例1 Outgoing #: 5 Introverted #: 5 Diff = 3611 输入样例2 13 110 79 218 69 3721 100 29 135 2 6 13 5188 85 输出样例2 Outgoing #: 7 Introverted #: 6 Diff = 9359
因为两群人的差的绝对值要求最大,且人数相差最小。那么可以先把活跃度从小到大排序,内向人群活跃度为较小部分(0~mid)之和,外向人群为活跃度为较大部分(mid+1~n-1)之和,mid=n/2达到人数相差最小。
#include<iostream> #include<string.h> #include<algorithm> using namespace std; int main() { int n,degree[120000]; cin>>n; memset(degree,0,sizeof(degree)); for(int i=0;i<n;i++) cin>>degree[i]; //从小到大排序 sort(degree,degree+n); int Min=0,Max=0,mid=n/2; for(int i=0;i<mid;i++) Min=Min+degree[i]; for(int i=mid;i<n;i++) Max=Max+degree[i]; cout<<"Outgoing #: "<<n-mid<<endl <<"Introverted #: "<<mid<<endl <<"Diff = "<<Max-Min<<endl; return 0; }
呜,因为评测时间没了所以写不完坑辣QAQ 哭唧唧
