1. 程式人生 > >小米oj——純位數

小米oj——純位數

描述
在數學中,所謂“純位數”是指由相同位元重複而組成的自然數。比如在十進位制中,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

首先,需要了解進位制,以22為例,它的最小進製為10,我們可以發現
22%10=(22/10)%10
再以15為例,他的最小二進位制是15
15%2=15/2%2=15/2/2%2=。。。。。。=直到結果為0
於是我們的演算法思路就出現了
從2進位制開始遍歷
貼上程式碼,僅供參考

	private static String solution(String line) {
		int a= Integer.parseInt(line);
		for(int i = 2;i<=a+1;i++)
		{
			if(find(a,i))
				return String.valueOf(i);
			
		}
		return null;
	}
	public static boolean find(int a,int i)
	{
		int temp = a%i;
		while(a%i==temp)
		{
			a = a/i;
		}
		if(a==0)
		return true;
		else
			return false;
		
	    
}