出生年(1033)
我出生于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位数字不同的条件。
set判重。用到insert()和size()函数#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <set>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
for(int i=n;i<=3000;i++)
{
set<int>s;//set每次都要重置。写里面
int y=i;
for(int j=0;j<4;j++)
{
s.insert(y%10);
y/=10;
}
if(s.size()==m)
{
cout<<i-n<<" "<<i<<endl;
break;
}
}
return 0;
}
点赞(1034)
没啥坑,直接用一个大数组,把那些数当做下标存进去就行。也不会超时。
情人节(1035)
二维char数组存名字的地方开小了(10),一直有组样例过不去,不能满分。开成11.浪费了好长时间。
古风排版(1039)
字符串处理类型问题。用gets()可输入空格。注意判断有几列时,要向上取整。 其他位置用空格填充。
输入样例:
4 This is a test case输出样例:
asa T st ih e tsi ce s
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <set>
using namespace std;
int main()
{
int n;
cin>>n;
getchar();
char s[110],a[101][101];
memset(a,' ',sizeof(a));
gets(s);
int len=strlen(s);
int m;
if(len%n==0) m=len/n;
else m=len/n+1;
//注意向上取整
cout<<m<<"m"<<endl;
int t=0;
for(int j=m-1;j>=0;j--)//从最后一列开始。
{
for(int i=0;i<n;i++)
{
if(t<len)
a[i][j]=s[t++];
// else
// a[i][j]=' ';
//多的用空格填充
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<a[i][j];
}
cout<<endl;
}
return 0;
}