どーも、みつおです。
数学の問題以外で日常で5乗することなどあるのだろうか。
問題
驚くべきことに, 各桁を4乗した数の和が元の数と一致する数は3つしかない.
- 1634 = 1^4 + 6^4 + 3^4 + 4^4
- 8208 = 8^4 + 2^4 + 0^4 + 8^4
- 9474 = 9^4 + 4^4 + 7^4 + 4^4
ただし, 1=1^4は含まないものとする. この数たちの和は 1634 + 8208 + 9474 = 19316 である.
各桁を5乗した数の和が元の数と一致するような数の総和を求めよ.
出典:Problem30
解答
using System; using System.Collections.Generic; using System.Linq; namespace Problem30 { class Program { static void Main(string[] args) { Console.WriteLine(Solve()); Console.ReadLine(); } private static long Solve() { long ret = 0; List<long> tmp = new List<long>(); //各桁の5乗の最大値 = 354294 = 9^5 * 6 for (long i = 2; i < 354294; i++) { Stack<long> st = new Stack<long>(); //元の数 long n = i; //各桁の値を取得 while (n > 0) { st.Push(n % 10); n /= 10; } //各桁を5乗した和が元の値と一致するか判定 if (i == SumStack(st)) tmp.Add(i); } //各桁を5乗した数の和が元の数と一致するような数の総和 ret = tmp.Sum(); return ret; } private static long SumStack(Stack<long> st) { long ret = 0; //各桁分ループ foreach (var t in st) { //5乗した値を足しこむ ret += (long)Math.Pow(t, 5); } return ret; } } }
出力
443839
コメント