c++练习271题:水仙花数

*271题

原题传送门:http://oj.tfls.net/p/271

题解:

#include<bits/stdc++.h>
using namespace std;
int cf(int a,int b){//a的b次方 
  int c=a;
  for (int i=1; i<b; i++)//
    a=a*c;
  return a;//返回a的b次方 
}
int main(){
  for (int n=3; n<=7; n++)//从三位数到七位数
  { 
    int cfn=cf(10,n);
    for (int num=cfn/10; num<=cfn; num++)//从n-1位到n位的所有数字遍历
    { 
      int ans=cf(num%10,n)+cf(num/10%10,n)+cf(num/100%10,n)+cf(num/1000%10,n)+cf(num/10000%10,n)+cf(num/100000%10,n);//ans=每一位的n次方和 
      if (ans==num) cout<<ans<<endl;//如果是水仙花数,输出它 
    }
  }
  return 0;
}

 

说明:就是从100-9999999遍历,计算每一位的n次方,判断是不是水仙花数

posted @ 2022-12-07 10:10  TC2105LJY  阅读(73)  评论(0编辑  收藏  举报