首页 > 其他 > 详细

Weekly Contest 129--1022. Smallest Integer Divisible by K--Medium

时间:2019-03-25 21:06:47      阅读:170      评论:0      收藏:0      [点我收藏+]

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
Output: -1
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

原文:https://www.cnblogs.com/xuyy-isee/p/10596554.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!