A. Beautiful Year

本文介绍了一个编程问题,目标是在给定年份之后找到第一个所有数字都不重复的年份。通过一个C语言程序示例,详细解释了如何检查年份是否满足条件,并逐步迭代直到找到解决方案。

A. Beautiful Year

time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output

It seems like the year of 2013 came only yesterday. Do you know a curious fact? The year of 2013 is the first year after the old 1987 with only distinct digits.

Now you are suggested to solve the following problem: given a year number, find the minimum year number which is strictly larger than the given one and has only distinct digits.

Input
The single line contains integer y (1000 ≤ y ≤ 9000) — the year number.

Output
Print a single integer — the minimum year number that is strictly larger than y and all it’s digits are distinct. It is guaranteed that the answer exists.

问题链接:A. Beautiful Year.

问题简述:

输入一个年份y,求这个年份后第一个四个数字都不同的年份。y (1000 ≤ y ≤ 9000)

程序说明:

AC通过的C语言程序如下:

#include<iostream>
using namespace std;
//判断这一年是不是一个好看的年份
bool qua(int a[])
{
	if(a[0]!=a[1]
	&&a[0]!=a[2]
	&&a[0]!=a[3]
	&&a[1]!=a[2]
	&&a[1]!=a[3]
	&&a[2]!=a[3])return 0;
	else return 1;
}
int main()
{
	int year,ans[4],h;
	cin>>year;
	year++;h=year;
	//将四个数字提取出来
	for(int i =0 ;i<4;i++)
	{
		ans[i] = h%10;
		h = h/10;
	}
	while(qua(ans))
	{
		year++;h = year;
		for(int i =0 ;i<4;i++)
	{
		ans[i] = h%10;
		h = h/10;
	}
	}
	h = ans[0]+ans[1]*10+ans[2]*100+ans[3]*1000;
	cout<<h;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值