小米oj——純位數
阿新 • • 發佈:2018-11-09
描述
在數學中,所謂“純位數”是指由相同位元重複而組成的自然數。比如在十進位制中,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; }