給定正整數(shù) K,你需要找出可以被 K 整除的、僅包含數(shù)字 1 的最小正整數(shù) N。返回 N 的長(zhǎng)度。如果不存在這樣的 N,就返回 -1。示例 1:輸入:1輸出:1解釋?zhuān)鹤钚〉拇鸢甘?N = 1,其長(zhǎng)度為 1。示例 2:輸入:2輸出:-1解釋?zhuān)翰淮嬖诳杀?2 整除的正整數(shù) N 。示例 3:輸入:3輸出:3解釋?zhuān)鹤钚〉拇鸢甘?N = 111,其長(zhǎng)度為 3。提示:1 <= K <= 10^5來(lái)源:力扣(LeetCode)鏈接:https://leetcode-cn.com/problems/smallest-integer-divisible-by-k著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。題目意思就是輸入一個(gè)K(1 <= K <= 100000),找一個(gè)N(N的值可以是1,11,111,1111,11111......),使得N%K=0,找出這個(gè)最小的N,輸出N的位數(shù)。下面是我寫(xiě)的代碼。class?Solution?{
????public?int?smallestRepunitDivByK(int?K)?{
????????if?(K?%?2?==?0?||?K?%?5?==?0?||?K?<?1?||?K?>?Math.pow(10,?5))?{
????????????return?-1;
????????}
????????BigInteger?N?=?BigInteger.valueOf(0);
????????BigInteger?s=?BigInteger.valueOf(10);
????????for?(int?i?=?0;;?i++)?{
????????????N=N.add(s.pow(i));
????????????if?(Objects.equals(N.divideAndRemainder(new?BigInteger(String.valueOf(K)))[1],?new?BigInteger("0")))?{
????????????????System.out.println(N);
????????????????return?i?+?1;
????????????}
????????}
????}
}但是卡在K=19927了,調(diào)試到幾百個(gè)1都除不盡這個(gè)數(shù),要怎么證明并找出哪些數(shù)是無(wú)解的呢?
添加回答
舉報(bào)
0/150
提交
取消