Umut D.

Umut D.

Powered by Jekyll & Github

  • Coding-Challenges

  • Soru

    Programcıya sayi (girilenSayi) ve üs (us) değerleri veriliyor. Sonrasında abcd… olarak verilen bir sayının, ardışık üsleriyle alınan basamak toplamının k * n’ye eşit olup olmadığının bulunması isteniyor. Eğer eşitlik varsa, n sayısının, değilse -1 sonucunun döndürülmesi gerektiği belirtiliyor.

    Örnek

    Girdi Çıktı
    89 8¹ + 9² = 89 89 * 1
    695 6² + 9³ + 5⁴ = 1390 = 695 * 2
    695 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51

    Çözüm - C#

    using System;
    
    class Program
    {
        public static void Main()
        {
            int girilenSayi = 89;
            int us = 1;
    
            // girilenSayi'yi tek tek rakamlara dönüştür
            char[] karakter = girilenSayi.ToString().ToCharArray();
    
            double sonuc = 0;
            foreach (char sayi in karakter)
            {
                // Her bir sayinin üssünü al ve her döngüde üs değerini arttır
                sonuc += Math.Pow(double.Parse(sayi.ToString()), us);
                us++;
            }
    
            // Sonuç/girilenSayi sonucu tam sayı ise sonucu yazdır
            sonuc /= girilenSayi;
            if (!(sonuc % 1 > 0))
                Console.WriteLine(sonuc);
            else
                Console.WriteLine(-1);
    
            Console.Read();
        }
    }
    

    Çözüm - Java

    public class Main
    {
        public static void main(String[] args)
        {
            int girilenSayi = 89;
            int us = 1;
    
            // girilenSayi'yi tek tek rakamlara dönüştür
            char[] karakter = Integer.toString(girilenSayi).toCharArray();
    
            double sonuc = 0;
            for (char sayi : karakter)
            {
                // Her bir sayinin üssünü al ve her döngüde üs değerini arttır
                sonuc += Math.pow(Character.getNumericValue(sayi), us);
                us++;
            }
    
            // Sonuç/girilenSayi sonucu tam sayı ise sonucu yazdır
            sonuc /= girilenSayi;
            if (!(sonuc % 1 > 0))
                System.out.println((int) sonuc);
            else
                System.out.println(-1);
        }
    }