首先通过观察,可以发现,这个数必然是至少6位数的。因为他乘以6之后还是一样的位数。这就要求他最高位必然是1了。次高位不超过6.
然后1倍到6倍的最高位必然都是不一样的。
可以这样证明:在1倍到6倍之间。
假设x为第i倍的最高位,y为第i +1倍的最高位
如果x 与y相等,必然x是通过进位得到的。
但是如果x能产生进位,由于y是i + 1倍得来的,所以i +1倍也必然会进位。
所以y不可能与x相等
所以他至少是6位数。
事实上也是如此。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <stack>
#include <cmath>
#include <set>
#include <vector>
#define eps 1e-6
#define INF 1000000007
#define PI acos(-1.0)
using namespace std;
string get(int x)
{
string tmp = "";
while(x)
{
tmp += char(x % 10 + '0');
x /= 10;
}
sort(tmp.begin(), tmp.end());
return tmp;
}
bool gao(int x)
{
string s = get(x);
for(int i = 2; i <= 6; i++)
if(get(x * i) != s) return 0;
return 1;
}
int main()
{
for(int i = 100001; i <= 166666; i += 2)
{
if(gao(i))
{
printf("%d\n", i);
break;
}
}
return 0;
}