Necati Ergin Hocamın kendi sayfasında bulunan çalışma sorularını ve cevaplarını burada yanıtlamaya çalıştım. Sorulara buradan ulaşabilirsiniz.
Sayma sayılarında 10’luk sayı sisteminde yalnızca 4 tane factorion sayı var. İyi ama factorion sayı ne demek? Basamaklarının faktöriyelleri toplamı kendisine eşit olan sayıya “factorion” deniyor. Örneğin abc tamsayısı eğer bir factorion ise
abc = a! + b! + c!
|
eşitliğinin doğru olması gerekiyor. İlk iki factorion sayının 1 ve 2 olduğu açık. Diğer iki factorion sayıyı da bir C programı yazarak siz bulun. Bir ipucu olarak her iki sayının da 100.000‘den küçük olduğunu söyleyelim.
Yanıt:
Necati Hoca bu sorunun cevabını vermiş. Blog da tüm çözümler bulunması için bende burada Necati Hoca’nın çözümünü kullandım.
#include <stdio.h> int is_factorion(int val) { static const int a_facts[] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 }; int sum = 0; int temp = val; while (temp) { sum += a_facts[temp % 10]; temp /= 10; if (sum > val) return 0; } return sum == val; } int main() { int k; for (k = 3; k < 100000; ++k) if (is_factorion(k)) printf("%d ", k); return 0; }
Hiç yorum yok:
Yorum Gönder
Son Ütücü