Codeforces Round #166 (Div. 2) A. Beautiful Year【暴力枚举/逆向思维/大于当前数且每个位数不同】
A. Beautiful Year
time limit per test
2 secondsmemory limit per test
256 megabytesinput
standard inputoutput
standard 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.
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.
Examples
input
1987
output
2013
input
2013
output
2014
【题意】:给你一个数。求大于该数且每个位数不相同。四位数。
【分析】:逆向思维,类似回文串,双重循环,一个指针遍历,另一个指针紧跟其后。两两一相等就return false了。
【代码】:
#include<cstdio> #include<iostream> #include<queue> #include<algorithm> using namespace std; bool check(int n) { int i=0,a[4],j; while(n) { a[i++]=n%10; n/=10; } for(int i=0;i<4;i++) { for(int j=i+1;j<4;j++) { if(a[i]==a[j]) return false; } } return true; } int main() { int n; while(cin>>n) { for(int i=n+1; ;i++) { if(check(i)) { cout<<i<<endl; break; } } } return 0; }