纯位数
序号:#101难度:非常难时间限制:2000ms内存限制:20M
描述
在数学中,所谓“纯位数”是指由相同位元重复而组成的自然数。比如在十进制中,1,22,333,555 都是纯位数。 很显然,15 在十进制中不是一个纯位数,但是在二进制 15(10) = 1111(2) 却是一个纯位数。
一个显然的事实是,对于正整数 N,其在 N+1 进制中必然是一个一位数,也就必然是个纯位数。
对于一个正整数 N,试找出使其成为纯位数的最小进制 K。
输入
一个正整数 N (0 < N < 10^8)
输出
使 N 为纯位数的最小进制 K
输入样例
22 15
复制样例
输出样例
10 2
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
typedef long long ll;
int n;
bool ok(int k)
{
int N=n;
int tmp=N%k;
while(N%k==tmp)
{
N/=k;
}
return N==0;
}
int main()
{
while(~scanf("%d",&n))
{
for(int i=2;i<=n+1;i++)
{
if(ok(i)){printf("%d
",i);break;}
}
}
return 0;
}