您的位置:首页 > 编程语言 > C语言/C++

CodeForces-271A-Beautiful Year

2014-10-14 21:22 302 查看
A. Beautiful Yeartime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputIt 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.InputThe single line contains integer y (1000 ≤ y ≤ 9000) —the year number.OutputPrint a single integer — the minimum year number that is strictly larger than y and all it's digits are distinct. It is guaranteed that theanswer 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;}
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ java codeforces