/*
ID: fairyroad
TASK: runround
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<deque>
using namespace std;
ifstream fin("runround.in");
ofstream fout("runround.out");
unsigned long m;
deque<int> digit;
bool flag[10];
inline void reset()
{
for(int i = 0; i < 10; ++i)
flag[i] = false;
}
inline int split(unsigned long num)
{
int i = 0, j;
reset();
while(num)
{
j = num%10;
if(j == 0 || flag[j]) return 0;
digit.push_front(j);
num /= 10;
flag[j] = true;
++i;
}
return i;
}
int main()
{
fin>>m;
unsigned long num = m+1;
while(true)
{
int p = split(num);
if(p)
{
int s = 0, cnt = 0, next = 0;
reset();
while(cnt!=p)
{
next = (digit[s]+next)%p;
if(!flag[next])
{
flag[next] = true;
++cnt;
s = next;
}
else break;
}
if(s==0 && cnt==p)
{
fout<<num<<endl;
return 0;
}
}
++num;
}
}
USACO runround
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.