Bir n tamsayısı verildiğinde, sonuç tek basamaklı bir sayı oluncaya kadar basamaklarının toplamını tekrar tekrar bulmamız gerekir.
Örnekler:
Giriş: sayı = 1234
Çıkış: 1
Açıklama:
Adım 1: 1 + 2 + 3 + 4 = 10
Adım 2: 1 + 0 = 1
çoğullamaGiriş: sayı = 5674
Çıkış: 4
Açıklama:
Adım 1: 5 + 6 + 7 + 4 = 22
Adım 2: 2 + 2 = 4
İçerik Tablosu
[Naif Yaklaşım] Rakamları Tekrarlayarak Ekleyerek
Yaklaşım dijital RO'nun hesaplanmasına odaklanmıştır. T Tek basamaklı bir değer elde edilinceye kadar rakamların tekrar tekrar toplanması sonucu oluşan sayının adı. Kavramsal olarak şu şekilde çalışır:
- Rakamları topla : Verilen sayının tüm rakamlarını toplayarak başlayın.
- Sonucu kontrol edin : Toplam tek haneli bir sayı ise (yani 10'dan küçükse) durdurun ve geri döndürün.
- İşlemi tekrarlayın : Toplam hala tek rakamdan fazla ise rakamların toplamı ile işlemi tekrarlayın. Bu, tek haneli bir toplam elde edilene kadar devam eder.
// C++ program to find the digit sum by // repetitively Adding its digits #include using namespace std; int singleDigit(int n) { int sum = 0; // Repetitively calculate sum until // it becomes single digit while (n > 0 || sum > 9) { // If n becomes 0 reset it to sum // and start a new iteration. if (n == 0) { n = sum; sum = 0; } sum += n % 10; n /= 10; } return sum; } int main() { int n = 1234; cout << singleDigit(n); return 0; }
C // C program to find the digit sum by // repetitively Adding its digits #include int singleDigit(int n) { int sum = 0; // Repetitively calculate sum until // it becomes single digit while (n > 0 || sum > 9) { // If n becomes 0 reset it to sum // and start a new iteration. if (n == 0) { n = sum; sum = 0; } sum += n % 10; n /= 10; } return sum; } int main() { int n = 1234; printf('%d' singleDigit(n)); return 0; }
Java // Java program to find the digit sum by // repetitively Adding its digits class GfG { static int singleDigit(int n) { int sum = 0; // Repetitively calculate sum until // it becomes single digit while (n > 0 || sum > 9) { // If n becomes 0 reset it to sum // and start a new iteration. if (n == 0) { n = sum; sum = 0; } sum += n % 10; n /= 10; } return sum; } public static void main(String[] args) { int n = 1234; System.out.println(singleDigit(n)); } }
Python # Python program to find the digit sum by # repetitively Adding its digits def singleDigit(n): sum = 0 # Repetitively calculate sum until # it becomes single digit while n > 0 or sum > 9: # If n becomes 0 reset it to sum # and start a new iteration if n == 0: n = sum sum = 0 sum += n % 10 n //= 10 return sum if __name__ == '__main__': n = 1234 print(singleDigit(n))
C# // C# program to find the digit sum by // repetitively Adding its digits using System; class GfG { static int singleDigit(int n) { int sum = 0; // Repetitively calculate sum until // it becomes single digit while (n > 0 || sum > 9) { // If n becomes 0 reset it to sum // and start a new iteration. if (n == 0) { n = sum; sum = 0; } sum += n % 10; n /= 10; } return sum; } static void Main() { int n = 1234; Console.WriteLine(singleDigit(n)); } }
JavaScript // JavaScript program to find the digit sum by // repetitively Adding its digits function singleDigit(n) { let sum = 0; // Repetitively calculate sum until // it becomes single digit while (n > 0 || sum > 9) { // If n becomes 0 reset it to sum // and start a new iteration. if (n === 0) { n = sum; sum = 0; } sum += n % 10; n = Math.floor(n / 10); } return sum; } // Driver Code const n = 1234; console.log(singleDigit(n));
Çıkış
1
Zaman Karmaşıklığı: O(günlük10n) sayının rakamları üzerinde yineleme yaptığımız için.
Yardımcı Alan: Ç(1)
[Beklenen Yaklaşım] Matematiksel Formül Kullanma
Ondalık sistemdeki her sayının, rakamlarının toplamının 10'un kuvvetleriyle çarpılmasıyla ifade edilebileceğini biliyoruz. Örneğin, şu şekilde temsil edilen bir sayı: abcd aşağıdaki gibi yazılabilir:
abcd = a*10^3 + b*10^2 + c*10^1 + d*10^0
Rakamları ayırıp bunu şu şekilde yeniden yazabiliriz:
abcd = a + b + c + d + (a*999 + b*99 + c*9)
abcd = a + b + c + d + 9*(a*111 + b*11 + c)
Bu, herhangi bir sayının, rakamlarının toplamı artı 9'un katı olarak ifade edilebileceği anlamına gelir.
Yani her iki tarafta 9'lu modulo alırsak
abcd % 9 = (a + b + c + d) % 9 + 0Bu, abcd'nin 9'a bölümünden kalanın, rakamlarının toplamının (a + b + c + d) 9'a bölümünden kalana eşit olduğu anlamına gelir.
css listeleri
Rakamların toplamı birden fazla rakamdan oluşuyorsa, bu toplamı rakamlarının toplamı artı 9'un katı olarak da ifade edebiliriz. Sonuç olarak modulo 9'u almak, rakamların toplamı tek haneli sayı haline gelene kadar 9'un katlarını ortadan kaldıracaktır.
Sonuç olarak herhangi bir sayının rakamlarının toplamı modulo 9'a eşit olacaktır. Modulo işleminin sonucu sıfır ise bu tek haneli sonucun 9 olduğunu gösterir.
Kod uygulaması hakkında bilgi edinmek için bkz. Verilen büyük tam sayının Dijital Kökü (tekrarlanan dijital toplam)