Рубрики

Цифровой корень (повторяющаяся цифровая сумма) заданного большого целого числа

Цифровой корень положительного целого числа находится путем суммирования цифр целого числа. Если полученное значение представляет собой одну цифру, то эта цифра является цифровым корнем. Если полученное значение содержит две или более цифр, эти цифры суммируются, и процесс повторяется. Это продолжается до тех пор, пока необходимо получить одну цифру.

По заданному номеру задача состоит в том, чтобы найти его цифровой корень. Номер ввода может быть большим, и его невозможно сохранить, даже если мы используем long long int.

Спросил в ACM-ICPC

Примеры :

Input : num = "1234"
Output : 1
Explanation : The sum of 1+2+3+4 = 10, 
              digSum(x) == 10
              Hence ans will be 1+0 = 1

Input : num = "5674"
Output : 4 

Мы обсудили решение для чисел, которые могут вписаться в длинный и длинный, в следующем посте.
Нахождение суммы цифр числа, пока сумма не станет одной цифрой

В этом посте аналогичные подходы обсуждаются для большого числа.

Способ 1

Найти цифровой корень 65785412
шаги:

  1. Узнайте все цифры номера
  2. Добавить все числа по одному
  3. Если конечная сумма двузначная, добавьте еще раз, чтобы сделать ее однозначной
  4. Результат, полученный в виде одной цифры, является цифровым корнем числа.

Пример:
Ввод: 65785412
Найти цифровой корень: (6 + 5 + 7 + 8 + 5 + 4 + 1 + 2) = 38 => 11 => (1 + 1) = 2
Выход: 6

Способ 2

Идея основана на том факте, что для ненулевого числа num цифровой корень равен 9, если число делится на 9, в противном случае цифровой корень равен num% 9. (См. Http://www.sjsu.edu/faculty/. watkins / Digitsum0.htm для деталей)

Найти цифровой корень 65785412
шаги:

  1. Сумма цифр = 6 + 5 + 7 + 8 + 5 + 4 + 1 + 2 = 38
  2. Поскольку 38 не кратно 9, цифровой корень равен 38% 9 = 2.

C ++

// C ++ программа для поиска цифрового корня числа
#include<bits/stdc++.h>

using namespace std;

  
// Возвращает цифровой корень числа

int digitalRoot(string num)

{

    // Если num равно 0.

    if (num.compare("0") == 0)

        return 0;

  

    // Подсчитать сумму цифр под модом 9

    int ans = 0;

    for (int i=0; i<num.length(); i++)

        ans = (ans + num[i]-'0') % 9;

  

    // Если сумма цифр кратна 9, ответим

    // 9, остальное с 9.

    return (ans == 0)? 9 : ans % 9;

}

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

int main()

{

    string num = "65785412";

  

    // Вызов функции digitalRoot

    cout<< digitalRoot(num) <<endl;

  

    return 0;

}

  
// Примечание: особый случай, когда num = "00 ..."
// программа не даст правильного вывода.

Джава

// Java-код для цифрового корня

import java.util.*;

   

public class GfG {

       

    static int digroot(int n)

    {

        int root = 0;

   

        // Цикл, чтобы сделать сумму в то время как

        // сумма не меньше чем

        // или равно 9

        while (n > 0 || root > 9

        {

             if (n == 0) {

                n = root;

                root = 0;

            }

              

            root += n % 10;

            n /= 10;

        }

        return root;

    }

       

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

    public static void main(String argc[])

    {

        int n = 65785412;

        System.out.println(digroot(n));

    }

}

  
// Этот код предоставлен Gitanjali.
// Этот код также будет работать для тестового примера 0000.

python3

# Python3 программа для поиска цифрового рута
№ числа

import math 

  
# Возвращает цифровой корень числа

def digitalRoot(num):

      

    # Если число равно 0.

    if (num == "0"):

        return 0

  

    # Подсчитать сумму цифр в моде 9

    ans = 0

    for i in range (0, len(num)):

        ans = (ans + int(num[i])) % 9

          

  

    # Если сумма цифр кратна 9, ответьте

    № 9, остальное с 9.

    if(ans == 0):

        return 9

    else

        return ans % 9

  
# Метод драйвера

num = "65785412"

  
# Вызов функции digitalRoot

print (digitalRoot(num))

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

C #

// C # код для цифрового корня

using System;

  

class GfG {

      

    static int digroot(int n)

    {

        int root = 0;

  

        // Цикл, чтобы сделать сумму в то время как

        // сумма не меньше чем

        // или равно 9

        while (n > 0 || root > 9) 

        {

            if (n == 0) {

                n = root;

                root = 0;

            }

              

            root += n % 10;

            n /= 10;

        }

        return root;

    }

      

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

    public static void Main()

    {

        int n = 65785412;

        Console.Write(digroot(n));

    }

}

  
// Этот код предоставлен Smitha
// Этот код также будет работать для тестового примера 0000.

PHP

<?php
// PHP программа для поиска
// цифровой корень числа

  
// Возвращает цифровой корень числа

function digroot($n)

{

    $root = 0;

  

    // Цикл, чтобы сделать сумму в то время как

    // сумма не меньше чем

    // или равно 9

    while ($n > 0 || $root > 9) 

    {

        if ($n == 0) 

        {

            $n = $root;

            $root = 0;

        }

          

        $root += $n % 10;

        $n /= 10;

    }

    return $root;

}

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

$num = 65785412;

  
// Вызов функции digitalRoot

echo digroot($num);

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


Выход :

2

Эта статья предоставлена Шив Пратап Сингх . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

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

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

Цифровой корень (повторяющаяся цифровая сумма) заданного большого целого числа

0.00 (0%) 0 votes