Weekly Contest 129--1022. Smallest Integer Divisible by K--Medium
阿新 • • 發佈:2019-03-25
最大公約數 實現 HERE pub 公約數 == amp urn nat
Output: -1
Explanation: There is no such positive integer N divisible by 2.
Example 3:
Given a positive integer K, you need find the smallest positive integer N such that N is divisible by K, and N only contains the digit 1.
Return the length of N. If there is no such N, return -1.
Example 1:
Input: 1
Output: 1
Explanation: The smallest answer is N = 1, which has length 1.
Example 2:
Input: 2
Explanation: There is no such positive integer N divisible by 2.
Example 3:
Input: 3
Output: 3
Explanation: The smallest answer is N = 111, which has length 3.
Note:
1 <= K <= 10^5
1.思考
- 剛開始想到的是直接用int來存儲N,但是發現超出了範圍;
- 後來改成long long來存儲,還是超出範圍;
- 之後參考了其他資料才知道可以用下面這樣類似於歐幾裏得算法來求解。
2.實現
class Solution { public: int smallestRepunitDivByK(int K) { int n = 0; for(int i=1; i<=K; i++){ n = (n*10+1) % K;//計算最大公約數的歐幾裏德算法 if(n==0) return i; } return -1; } };
Weekly Contest 129--1022. Smallest Integer Divisible by K--Medium