我是靠谱客的博主 年轻人生,最近开发中收集的这篇文章主要介绍CodeForces-271A-Beautiful Year,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

A. Beautiful Year
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard 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.

Sample test(s)
input
1987
output
2013
input
2013
output
2014

最初做法:运用java字符串与数字间的切换,再将数字导入集合,判断基本元素个数多少来判断是否每个数字都不一样

import java.util.*;
public class BeautifulYear {
public static void main(String[]args){
Scanner in=new Scanner(System.in);
String xString=in.next();
StringBuffer xBuffer=new StringBuffer(xString);
Set set=new HashSet();
int temp;
while(true){
temp=Integer.parseInt(xBuffer.toString());
temp++;
xBuffer=new StringBuffer(String.valueOf(temp));
for(int i=0;i<4;i++){
set.add(xBuffer.charAt(i));
}
if(set.size()==4)
break;
set.clear();
}
System.out.println(temp);
}
}
改进,运用单纯的‘%’以及‘/‘操作符进行取余以及求整操作,得到每个数字的各位的数值,%的数值,/筛选出下个数量级的数据继续重复步骤,代码改用c++操作

#include<iostream>
#include<string>
using namespace std;
int main()
{
int q, b, s, g, x;
int y, z;
cin >> x;
x++;
while (1)
{
q = x / 1000;
y = x % 1000;
b = y / 100;
z = y % 100;
s = z / 10;
g = z % 10;
if (q != b&&q != s&&q != g&&b != s&&b != g&&g != s)
break;
x++;
}
cout << x;
system("pause");
return 0;
}




最后

以上就是年轻人生为你收集整理的CodeForces-271A-Beautiful Year的全部内容,希望文章能够帮你解决CodeForces-271A-Beautiful Year所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部