Рубрики

Нахождение суммы цифр числа, пока сумма не станет одной цифрой

Учитывая число n , нам нужно найти сумму его цифр, такую что:

If n < 10    
    digSum(n) = n
Else         
    digSum(n) = Sum(digSum(n))

Примеры :

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

Input : 5674
Output : 4 

Метод грубой силы заключается в суммировании всех цифр до суммы <10.
Flowchart:

Ниже программа грубой силы, чтобы найти сумму.

C ++

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

   

using namespace std;

  

int digSum(int n)

{

    int sum = 0;

     

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

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

    // или равно 9

    while(n > 0 || sum > 9)

    {

        if(n == 0)

        {

            n = sum;

            sum = 0;

        }

        sum += n % 10;

        n /= 10;

    }

    return sum;

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    int n = 1234;

    cout << digSum(n);

    return 0;

}

Джава

// Java-программа для поиска суммы
// цифры номера до
// сумма становится одной цифрой.

import java.util.*;

  

public class GfG {

      

    static int digSum(int n)

    {

        int sum = 0;

  

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

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

        // или равно 9

        while (n > 0 || sum > 9

        {

            if (n == 0) {

                n = sum;

                sum = 0;

            }

            sum += n % 10;

            n /= 10;

        }

        return sum;

    }

      

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

    public static void main(String argc[])

    {

        int n = 1234;

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

    }

}

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

питон

# Программа Python для поиска суммы
# цифры номера до
# сумма становится одной цифрой.

import math 

  
# метод для нахождения суммы цифр
# числа, пока сумма не станет
# одна цифра

def digSum( n):

    sum = 0

      

    while(n > 0 or sum > 9):

      

        if(n == 0):

            n = sum

            sum = 0

          

        sum += n % 10

        n /= 10

      

    return sum

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

n = 1234

print (digSum(n))

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

C #

// C # программа для поиска суммы
// цифры номера до
// сумма становится одной цифрой.

using System;

  

class GFG {

      

    static int digSum(int n)

    {

        int sum = 0;

  

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

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

        // или равно 9

        while (n > 0 || sum > 9) 

        {

            if (n == 0)

            {

                n = sum;

                sum = 0;

            }

            sum += n % 10;

            n /= 10;

        }

        return sum;

    }

      

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

    public static void Main()

    {

        int n = 1234;

        Console.Write(digSum(n));

    }

}

  
// Этот код предоставлен нитин митталь

PHP

<?php
// PHP программа для поиска суммы
// цифры номера до
// сумма становится одной цифрой.

  

function digSum( $n)

{

    $sum = 0;

      

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

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

    // или равно 9

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

    {

        if($n == 0)

        {

            $n = $sum;

            $sum = 0;

        }

        $sum += $n % 10;

        $n = (int)$n / 10;

    }

    return $sum;

}

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

$n = 1234;

echo digSum($n);

  
// Этот код добавлен
// от aj_36
?>


Выход :

10

Для этого также существует простое и элегантное решение O (1) . Ответ дается просто:

If n == 0
   return 0;

If n % 9 == 0      
    digSum(n) = 9
Else               
    digSum(n) = n % 9 

Ниже приведена реализация вышеуказанной идеи:

CPP

#include<bits/stdc++.h> 

using namespace std;

  

int digSum(int n)

{

    if (n == 0) 

       return 0;

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

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    int n = 9999;

    cout<<digSum(n);

    return 0;

}

ДЖАВА

import java.io.*;

  

class GFG {

  

    static int digSum(int n)

    {

        if (n == 0

        return 0;

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

    }

      

    // Программа драйвера для проверки вышеуказанной функции

    public static void main (String[] args)

    {

        int n = 9999;

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

    }

}

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

python3

def digSum(n):

  

    if (n == 0):

        return 0

    if (n % 9 == 0):

        return 9 

    else:

        (n % 9)

  
# Драйвер программы для проверки вышеуказанной функции

n = 9999

print(digSum(n))

  
# Этот код предоставлен
# Смита Динеш Семвал

C #

using System;

  

class GFG

{

    static int digSum(int n)

    {

        if (n == 0) 

        return 0;

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

    }

      

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

    public static void Main ()

    {

        int n = 9999;

        Console.Write(digSum(n));

      

    }

}

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

PHP

<?php

  

function digSum($n)

{

    if ($n == 0) 

        return 0;

    return ($n % 9 == 0) ? 9 : ($n % 9);

}

  
// Программа драйвера для проверки вышеуказанной функции

$n = 9999;

echo digSum($n);

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


Выход:

9

Похожие сообщения:
http://espressocode.top/digital-rootrepeated-digital-sum-given-integer/

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

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

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

Нахождение суммы цифр числа, пока сумма не станет одной цифрой

0.00 (0%) 0 votes