c语言求水仙花数!!!!
输入n(3<=n<=7),输出所有n位的水仙花数,如输入3则输出153,370,371,407;5则输出54748,92727,93084;...
输入n(3<=n<=7),输出所有n位的水仙花数,如输入3则输出153,370,371,407;5则输出54748,92727,93084;
展开
展开全部
#include "stdio.h"
int main(int argc,char *argv[]){
int n,i,j,k,t,s,m,x;
printf("Please enter n(int 2<n<8)...\nn=");
if(scanf("%d",&n)!=1 || n<3 || n>7){
printf("Input error, exit...\n");
return 0;
}
for(k=1,i=0;i<n;i++,k*=10);
for(i=k/10;i<k;i++){
for(s=0,t=i;t>0;t/=10){
for(x=1,j=t%10,m=n;m--;x*=j);
s+=x;
}
if(s==i)
printf("%d\t",s);
}
printf("\n");
return 0;
}
运行样例:
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <cstdio>
#include <cmath>
int count(long long a) {
return (a>=0&&a<=9)?1:count(a/10)+1;
}
long long sum(long long a) {
int n=count(a);
long long s=0;
for(int i=1; i<=n; i++)
s+=pow((int)(a/pow(10,i-1))%10,n);
return s;
}
int main() {
for(int n;scanf("%d",&n);){
for(long long i=pow(10,n-1); i<=pow(10,n); i++)
if(i==sum(i)) printf("%d ",i);
printf("\n\n");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言经典案例之水仙花数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询