📜  找出能被 100 整除 K 次的第 N 个最小数

📅  最后修改于: 2021-10-27 06:26:02             🧑  作者: Mango

给定两个数字 N 和 K 。任务是找到被 100 整除 K 次的第 N 个最小数。
例子:

方法:

  • 首先,找出能被 100 整除 K 次的最小数。那是 1 之后的 2*K 个 0,因为 100 只有两个 0。
  • 要找到第 N 个最小的数字,请将 N 与我们在添加 2*k 个 0 后得到的前一个数字相乘。
  • 考虑 N 可被 100 整除的情况,就好像我们将 N 与前一个数字相乘,那么新数字将有超过 (2*k + 1) 个尾随 0,这意味着它将被 100 整除 K 次以上。
  • 将该数字乘以 (N + 1)。使用字符串作为 N 和 K 可能非常大,不适合整数限制。

下面是上述方法的实现:

C++
// C++ implementation of above approach
#include 
using namespace std;
 
// Function to find the Nth smallest number
string find_number(int N, int K)
{
    string r;
 
    // If N is divisible by 100 then we
    // multiply N + 1 otherwise, it will be
    // divisible by 100 more than K times
    if (N % 100 == 0) {
        N += 1;
 
        // convert integer to string
        r = to_string(N);
    }
 
    // if N is not divisible by 100
    else {
        // convert integer to string
        r = to_string(N);
    }
 
    // add 2*K 0's at the end to be divisible
    // by 100 exactly K times
    for (int i = 1; i <= K; i++)
        r += "00";
 
    return r;
}
 
// Driver Code
int main()
{
    int N = 1000, K = 2;
    string ans = find_number(N, K);
    cout << ans << "\n";
 
    return 0;
}


Java
// Java implementation of above approach
import java.util.*;
 
class GFG
{
 
// Function to find the Nth smallest number
static String find_number(int N, int K)
{
    String r;
 
    // If N is divisible by 100 then we
    // multiply N + 1 otherwise, it will be
    // divisible by 100 more than K times
    if (N % 100 == 0)
    {
        N += 1;
 
        // convert integer to string
        r = String.valueOf(N);
    }
 
    // if N is not divisible by 100
    else
    {
        // convert integer to string
        r = String.valueOf(N);
    }
 
    // add 2*K 0's at the end to be divisible
    // by 100 exactly K times
    for (int i = 1; i <= K; i++)
        r += "00";
 
    return r;
}
 
// Driver Code
public static void main(String[] args)
{
    int N = 1000, K = 2;
    String ans = find_number(N, K);
    System.out.println(ans);
}
}
 
/* This code is contributed by PrinciRaj1992 */


Python3
# Python3 implementation of above approach
 
# Function to find the Nth smallest number
def find_number(N, K):
     
    r = ""
 
    # If N is divisible by 100 then we
    # multiply N + 1 otherwise, it will be
    # divisible by 100 more than K times
    if (N % 100 == 0):
        N += 1;
 
        # convert integer to string
        r = str(N)
 
    # if N is not divisible by 100
    else:
         
        # convert integer to string
        r = str(N)
 
    # add 2*K 0's at the end to be divisible
    # by 100 exactly K times
    for i in range(1, K + 1):
        r += "00"
 
    return r
 
# Driver Code
N = 1000
K = 2;
ans = find_number(N, K)
print(ans)
 
# This code is contributed by Mohit Kumar


C#
// C# implementation of the approach
using System;
     
class GFG
{
 
// Function to find the Nth smallest number
static String find_number(int N, int K)
{
    String r;
 
    // If N is divisible by 100 then we
    // multiply N + 1 otherwise, it will be
    // divisible by 100 more than K times
    if (N % 100 == 0)
    {
        N += 1;
 
        // convert integer to string
        r = N.ToString();
    }
 
    // if N is not divisible by 100
    else
    {
        // convert integer to string
        r = N.ToString();
    }
 
    // add 2*K 0's at the end to be divisible
    // by 100 exactly K times
    for (int i = 1; i <= K; i++)
        r += "00";
 
    return r;
}
 
// Driver Code
public static void Main(String[] args)
{
    int N = 1000, K = 2;
    String ans = find_number(N, K);
    Console.WriteLine(ans);
}
}
 
// This code is contributed by Rajput-Ji


Javascript


输出:
10010000

时间复杂度: O(K)

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程