Leetcode 1022. 可被 K 整除的最小整数

1022. 可被 K 整除的最小整数

显示英文描述

我的提交返回竞赛

  • 用户通过次数74
  • 用户尝试次数262
  • 通过次数75
  • 提交次数1115
  • 题目难度Medium

给定正整数 K,你需要找出可以被 K 整除的、仅包含数字 1 的最小正整数 N。

返回 N 的长度。如果不存在这样的 N,就返回 -1

示例 1:

输入:1
输出:1
解释:最小的答案是 N = 1,其长度为 1。

示例 2:

输入:2
输出:-1
解释:不存在可被 2 整除的正整数 N 。

示例 3:

输入:3
输出:3
解释:最小的答案是 N = 111,其长度为 3。

提示:

  • 1 <= K <= 10^5

class Solution {
public:
    int smallestRepunitDivByK(int K) {
        set<int> s;
        int c = 1;
        int prod = 1%K;
        while(!s.count(prod)) { //没有碰到过
            if(prod == 0) {
                return c;
            }
            s.insert(prod);
            prod = (prod*10+1)%K; //这也能用mo来算。。
            cout << prod << " ";
            ++c;
        }
        return -1;
    }
};

——学到了

原文地址:https://www.cnblogs.com/cunyusup/p/10634134.html

时间: 2024-10-12 08:57:31

Leetcode 1022. 可被 K 整除的最小整数的相关文章

leetcode 974. 和可被 K 整除的子数组

目录 题目描述: 示例: 解法: 题目描述: 给定一个整数数组 A,返回其中元素之和可被 K?整除的(连续.非空)子数组的数目. 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解释: 有 7 个子数组满足其元素之和可被 K = 5 整除: [4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3] 提示: 1 <= A.length <= 30000 -10000 &

给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。

题目描述: 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除. 输入: 两个整数n(2<=n<=1000),a(2<=a<=1000) 输出: 一个整数. 样例输入: 6 10 样例输出: 1 这个题首先如果数字小的话是可以考虑轮流试的,但是1000的数字范围无论是对阶乘还是幂都太大了.于是我们想一下,既然要求整除,说明每个素因子都是可以抵消的,这样我们就可以求解了.但是还要考虑到,因为后面是求哪个k,所以说我们不是对n!和a的幂分别求出对应的素数因子数组.我

能被 K 整除的最大连续子串长度

[来源]网上流传的2017美团秋招笔试题 [问题描述] 两个测试样例输出都是5 [算法思路] 暴力解法时间会超限,使用一种很巧妙的数学方法.用在读取数组arr时用数组sum记录其前 i 项的和,即 sum[i] = arr[1]+arr[2]+...+arr[i].利用这一个数学性质:假设前m项之和被 K 除后余数是 x, 前n项之和被 K 除后余数也是 x, 则m+1-n的子序列之和肯定能被K整除. [代码] 1 #include<iostream> 2 #include<algori

poj3680 Intervals 区间k覆盖问题 最小费用最大流 建图巧妙

/** 题目:poj3680 Intervals 区间k覆盖问题 最小费用最大流 建图巧妙 链接:http://poj.org/problem?id=3680 题意:给定n个区间,每个区间(ai,bi),以及权值wi.选出一些区间,满足权值和最大且任何一个点不会被超过k个区间覆盖. 思路: 建图:对于每个区间(ai,bi). ai->bi,cap = 1,cost = -wi; (离散化后的ai,bi) 所有区间的端点放到数组,进行从小到大排序,去重,离散化,在数组内相邻的u端点,v端点.u->

一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵

题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: 每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K 接下来N行,每行M个数,表示矩阵每个元素的值 输出: 输出最小面积的值.如果出现任意矩阵的和都小于K,直接输出-1. 样例输入: 4 4 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 样例输出: 1 首先这个题应该是有一个动态规划的解法,不过好像复杂度也要到O(n^3lo

[Swift Weekly Contest 118]LeetCode974. 和可被 K 整除的子数组 | Subarray Sums Divisible by K

Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have a sum divisible by K. Example 1: Input: A = [4,5,0,-2,-3,1], K = 5 Output: 7 Explanation: There are 7 subarrays with a sum divisible by K = 5: [4, 5, 0, -2

获取不存在于某集合的大小至少为某整数的最小整数

题:获取大小至少为startNo,并且不存在于某个不确定是否有序的整数数组Array中的,最小整数. 如:不存在于2,6,8,11中的不小于3的最小整数为3. 如下测试代码,未发现实现不对... public static final String timeDifferenceFormats[] = { "天", "小时", "分钟", "秒" }; public static final String timeDiffere

将数组中的元素连接成一个整数并输出最小整数

将数组中的元素合并成一个整数并输出最小整数.例如数组{32,321},最小为32132:数组{100,22,199}最小为10019922... 这本是一个面试题,还是分享下我的方法.由于数组的合并可能会出现越界,故用整数的方法不可行.我的想法是将数组按照需要的进行排序,例如,前面32,321,排序后321,32.那怎样排序呢?其实就是两个数进行比较,上面32和321连接成的数是32132和32321,就是比较这两个数谁小,谁就在前.当然,考虑到越界,处理都是用的字符串. 下面是代码: #inc

N个数中未出现的最小整数

Description 给出一串数字,这串数字由 n 个数 ai 组成,找出未出现在这串数字中的最小正整数 Input 输入第一行为一个正整数 n (1 <= n <= 1000) 第二行为 n 个正整数 ai ( 1 <= ai <= 1000000000) Output 输出没有出现在这 n 个正整数中的最小的正整数 Sample Input 5 2 4 3 5 151 100 101 102 103 Sample Output 62 思路 因为n的大小为1000,所以没有出现