51nod 1015 水仙花

水仙花数是指一个 n 位数 ( 5=>n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)给出一个整数M,求 >= M的最小的水仙花数。

void shuixianhua(int a[])
{
 for(i=1;i<=9999;i++)
 { 
  o=i;
  int sum,sum1=0;
  while(o)//记录每个数 
  {
   k=o%10;
   p=log10(i)+1;
   sum=1;
   while (p) 
   {  
    if (p%2 == 1) {
     sum = (sum * k); 
    } //判断是否是奇数,是奇数的话将多出来的数事先乘如sum     
    p /= 2;  
    k = (k * k);// 不断的两两合并再取模,减小a和b的规模 
   }
   sum1+=sum;
   o/=10;
  } 
  if( sum1 == i)
  {
   a[i]=1;//记录完美数 
  }
 }
}

猜你喜欢

转载自blog.csdn.net/qq_44009311/article/details/86634042