Рубрики

Распечатать все хорошие числа в заданном диапазоне

Даны цифра 'd' и диапазон [L, R], где L 0, 6> 2 + 0 и 9> 6 + 2 + 0.

Пример:

Input:  L = 410, R = 520, d = 3
Output: 410 420 421 510 520 
All the numbers in output are good (every digit is more
than sum of digits on right of it) and don't have digit 3.

Input:  L = 410, R = 520, d = 1
Output: 420 430 520 
All the numbers in output are good (every digit is more
than sum of digits on right of it) and don't have digit 1.

Идея состоит в том, чтобы пройти все числа в данном диапазоне. Для каждого номера переберите все цифры. Пока проходите, следите за суммой цифр. В любой момент, если предыдущая сумма становится больше или равна сумме, вернуть false. Кроме того, если текущая цифра становится 'd', вернуть false.

Ниже приведена реализация идеи.

C / C ++

// C ++ программа для печати хороших чисел в заданном диапазоне [L, R]
#include<bits/stdc++.h>

using namespace std;

  
// Проверить, является ли n хорошим числом и не содержит
// цифра 'd'.

bool isValid(int n, int d)

{

    // Получить последнюю цифру и инициализировать сумму с правой стороны

    int digit = n%10;

    int sum = digit;

  

    // Если последняя цифра d, вернуть

    if (digit == d)

      return false;

  

    // Обход оставшихся цифр

    n /= 10;

    while (n)

    {

        // Текущая цифра

        digit = n%10;

  

        // Если цифра d или цифра меньше или

        // равно сумме цифр на правой стороне

        if (digit  == d || digit <= sum)

            return false;

  

        // Обновляем сумму и n

        else

        {

            sum += digit;

            n /= 10;

        }

    }

    return 1;

}

  
// Печатать хорошие числа в диапазоне [L, R]

void printGoodNumbers(int L, int R, int d)

{

   // Обходим все числа в заданном диапазоне

   for (int i=L; i<=R; i++)

   {

       // Если текущие числа хороши, выведите его.

       if (isValid(i, d))

          cout << i << " ";

   }

}

  
// Драйвер программы

int main()

{

    int L = 410, R = 520, d = 3;

  

    // Печатать хорошие числа в [L, R]

    printGoodNumbers(L, R, d);

  

    return 0;

}

Джава

// Java-программа для печати хороших чисел в заданном диапазоне [L, R]

import java.io.*;

  

class Numbers 

{

    // Функция для проверки, является ли n хорошим числом и не содержит

    // цифра 'd'

    static boolean isValid(int n, int d)

    {

        // Получить последнюю цифру и инициализировать сумму с правой стороны

        int digit = n%10;

        int sum = digit;

  

        // Если последняя цифра d, вернуть

        if (digit == d)

        return false;

  

        // Обход оставшихся цифр

        n /= 10;

        while (n>0)

        {

            // Текущая цифра

            digit = n%10;

      

            // Если цифра d или цифра меньше или

            // равно сумме цифр на правой стороне

            if (digit == d || digit <= sum)

                return false;

  

            // Обновляем сумму и n

                else

                {

                    sum += digit;

                    n /= 10;

                }

        }

    return true;

    }

      

    // Печатать хорошие числа в диапазоне [L, R]

    static void printGoodNumber(int L, int R, int d)

    {

        // Обходим все числа в заданном диапазоне

        for(int i=L;i<=R;i++)

        {

            // Если текущие числа хорошие, выведите их

            if(isValid(i, d))

                System.out.print(i+" ");

        }

    }

      

    // Драйвер программы

    public static void main (String[] args) 

    {

        int L = 410, R = 520, d = 3;

          

        // Печатать хорошие числа в [L, R]

        printGoodNumber(L, R, d);

    }

}

python3

# Python3 программа для печати хорошо
# числа в заданном диапазоне [L, R]

  
# Функция для проверки, является ли n
# хороший номер и не содержит
# цифра 'd'

def isValid(n, d):

      

    # Получить последнюю цифру и инициализировать

    # сумма с правой стороны

    digit = n % 10;

    sum = digit;

  

    # Если последняя цифра d, вернуть

    if (digit == d):

        return False;

  

    # Пройти оставшиеся цифры

    n = int(n / 10);

    while (n > 0):

          

        # Текущая цифра

        digit = n % 10;

      

        # Если цифра d или цифра

        # меньше или равно сумме

        Количество цифр на правой стороне

        if(digit == d or digit <= sum):

            return False;

              

        # Обновление суммы и n

        else:

            sum += digit;

            n = int(n / 10);

    return True;

      
# Печать хороших чисел в диапазоне [L, R]

def printGoodNumber(L, R, d):

      

    # Пройти все номера

    # в заданном диапазоне

    for i in range(L, R + 1):

          

        # Если текущие цифры хороши,

        # распечатать

        if(isValid(i, d)):

            print(i, end = " ");

      
Код водителя

L = 410;

R = 520;

d = 3;

          
# Напечатайте хорошие цифры в [L, R]
printGoodNumber(L, R, d);

  
# Этот код предоставлен mits

C #

// C # программа для печати хороших чисел в
// заданный диапазон [L, R]

using System;

  

class GFG {

      

    // Функция для проверки, является ли n хорошим

    // номер и не содержит цифру 'd'

    static bool isValid(int n, int d)

    {

          

        // Получить последнюю цифру и инициализировать

        // сумма с правой стороны

        int digit = n % 10;

        int sum = digit;

  

        // Если последняя цифра d, вернуть

        if (digit == d)

            return false;

  

        // Обход оставшихся цифр

        n /= 10;

        while (n > 0)

        {

              

            // Текущая цифра

            digit = n % 10;

      

            // Если цифра d или цифра

            // меньше или равно сумме

            // цифры на правой стороне

            if (digit == d || digit <= sum)

                return false;

  

            // Обновляем сумму и n

            else

            {

                sum += digit;

                n /= 10;

            }

        }

          

    return true;

    }

      

    // Печатать хорошие числа в диапазоне [L, R]

    static void printGoodNumber(int L, 

                               int R, int d)

    {

          

        // Обходим все числа в заданном диапазоне

        for(int i = L; i <= R; i++)

        {

              

            // Если текущие числа хороши,

            // распечатать

            if(isValid(i, d))

                Console.Write(i+" ");

        }

    }

      

    // Драйвер программы

    public static void Main () 

    {

        int L = 410, R = 520, d = 3;

          

        // Печатать хорошие числа в [L, R]

        printGoodNumber(L, R, d);

    }

}

  
// Этот код предоставлен vt_m.

PHP

<?php
// PHP программа для печати хорошо
// числа в заданном диапазоне [L, R]

  
// Проверить, является ли n хорошим
// номер и не содержит цифры 'd'.

function isValid($n, $d

    // Получить последнюю цифру и инициализировать

    // сумма с правой стороны

    $digit = $n % 10; 

    $sum = $digit

  

    // Если последняя цифра d, вернуть

    if ($digit == $d

    return false; 

  

    // Обход оставшихся цифр

    $n = (int)($n / 10); 

    while ($n

    

        // Текущая цифра

        $digit = $n % 10; 

  

        // Если цифра d или цифра меньше

        // чем или равно сумме цифр

        // на правой стороне

        if ($digit == $d || $digit <= $sum

            return false; 

  

        // Обновляем сумму и n

        else

        

            $sum += $digit

            $n = (int)($n / 10); 

        

    

    return 1; 

  
// Печатать хорошие числа в диапазоне [L, R]

function printGoodNumbers($L, $R, $d


// Обходим все числа в заданном диапазоне

for ($i = $L; $i <= $R; $i++) 

    // Если текущие числа хороши,

    // распечатать

    if (isValid($i, $d)) 

        echo $i . " "


  
// Код драйвера

$L = 410;

$R = 520;

$d = 3; 

  
// Печатать хорошие числа в [L, R]

printGoodNumbers($L, $R, $d); 

  
// Этот код предоставлен mits
?>


Выход:

 410 420 421 510 520 

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Распечатать все хорошие числа в заданном диапазоне

0.00 (0%) 0 votes