using System.Collections.Generic;publicclassSumpowdig{publicstaticlong[]EqSumPowDig(long hmax,int exp){
List<long> numbers =newList<long>();for(long i =2; i <= hmax; i++)if( digPowSum (i, exp)== i ) numbers.Add(i);return numbers.ToArray();}privatestaticlongdigPowSum(long num,int exp){long sum =0;while(num >0){
sum +=(long) System.Math.Pow((num %10), exp );
num /=10;}return sum;}}
答案2:
using System;using System.Collections.Generic;using System.Linq;publicclassSumpowdig{publicstatic IEnumerable<long>EqSumPowDig(long hmax,int exp){for(long i =2; i <= hmax; i++){if(i.ToString().Sum(c => Math.Pow(int.Parse(c.ToString()), exp))== i){yieldreturn i;}}}}
答案3:
using System;using System.Linq;using System.Collections.Generic;publicclassSumpowdig{publicstaticlong[]EqSumPowDig(long hmax,int exp){var r =newList<long>();for(long i =2; i <= hmax; i++)if(i.ToString().ToList().Sum(c => Math.Pow(long.Parse(c.ToString()), exp))== i) r.Add(i);return r.ToArray();}}
答案4:
using System;using System.Linq;using System.Collections.Generic;publicclassSumpowdig{publicstaticlong[]EqSumPowDig(long hmax,int exp){
List<long> a =newList<long>();for(int i=2; i<=hmax; i++){if((""+i).ToCharArray().Sum(c=>Math.Pow((int)Char.GetNumericValue(c),exp))==i){
a.Add(i);}}return a.ToArray();}}
答案5:
using System;using System.Linq;using System.IO;using System.Text;using System.Collections;using System.Collections.Generic;publicclassSumpowdig{publicstaticlong[]EqSumPowDig(long hmax,int exp){
List<long> l =newList<long>();for(int i =2; i <= hmax;i++){if(i.ToString().ToCharArray().Sum(x => Math.Pow(x-'0',exp))== i)
l.Add(i);}return l.ToArray();}}
答案6:
using System;using System.Collections.Generic;using System.Linq;publicclassSumpowdig{publicstatic Int64[]EqSumPowDig(Int64 HMax,Int32 Exp){var result =newList<Int64>();for(var index =2; index <= HMax; index++){var digits = index.ToString().ToCharArray().Select(Digit => Int32.Parse(Digit.ToString()));var sum = digits.Sum(Digit => Math.Pow(Digit, Exp));if(sum == index){
result.Add(index);}}return result.ToArray();}}
答案7:
using System;using System.Linq;using System.Collections.Generic;publicclassSumpowdig{publicstaticlong[]EqSumPowDig(long hmax,int exp){
List<long> result =newList<long>();for(long i =153; i <= hmax;++i)if(i == i.ToString().ToCharArray().Select(c => Char.GetNumericValue(c)).Sum(n => Math.Pow(n, exp)))
result.Add(i);return result.ToArray();}}
答案8:
using System;using System.Linq;using System.Collections.Generic;publicclassSumpowdig{publicstaticlong[]EqSumPowDig(long hmax,int exp){returnBruteForce(hmax, exp).ToArray();}privatestatic IEnumerable<long>BruteForce(long hmax,int exp){var nums = Enumerable.Range(0,10).Select(d =>(long)Math.Pow(d, exp)).ToArray();for(long i =2; i <= hmax; i++){if(i.ToString().Sum(d => nums[d -'0'])== i){yieldreturn i;}}}}
答案9:
using System;using System.Collections.Generic;using System.Linq;publicclassSumpowdig{publicstaticlong[]EqSumPowDig(long hmax,int exp ){var result =newStack<long>();for(long n = hmax; n >1; n--){var digits = Convert.ToString( n ).Select( d => d -'0').ToArray();if( digits.Sum( d => Math.Pow( d, exp ))== n ){
result.Push( n );}}return result.ToArray();}}
答案10:
using System;using System.Collections.Generic;using System.Linq;publicclassSumpowdig{publicstaticlong[]EqSumPowDig(long hmax,int exp){var list =newList<long>();for(var l =2L; l <= hmax; l++){var sumPower = l.ToString().Select(c =>(long)Math.Pow(char.GetNumericValue(c), exp)).Sum();if(l == sumPower) list.Add(l);}return list.ToArray();}}