0
点赞
收藏
分享

微信扫一扫

7-33 出生年

你的益达233 2022-04-30 阅读 36
c++c语言

新浪微博中一奇葩贴:“我出生于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

AC代码

#include<iostream>
using namespace std;
bool Flag(int x, int y); // 判断 x 中是否刚好存在 y 个不相等的数, 符合要求返回 false
int main()
{
int year,num,add=0;
cin >> year >> num;
while (Flag(year+add,num)) add++;
printf("%d %04d",add,year+add);
return 0;
}

bool Flag(int x, int y) {
int a[4] = {-1,-1,-1,-1},flag=1;
a[0] = x%10;
for(int z=0;z<3;z++)
{
x /= 10;
int op = x%10,flag_1 = 1;
for(int z2=0;z2<flag;z2++) if(a[z2]==op) flag_1=0;
if(flag_1) a[flag++] = op;
} ;
if(flag == y) return false;
return true;
}
举报

相关推荐

0 条评论