水仙花数的解法

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:1。 本题要求编写程序,计算所有N位水仙花数。

输入格式:
输入在一行中给出一个正整数N(3)。

输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:
3
输出样例:
153
370
371
407
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

我的代码(C语言):
#include<stdio.h>
int main()
{
int n,i,x=1,y=1;
scanf("%d",&n);
for(i=0;i<n-1;i++) x=x10;
for(i=0;i<n;i++) y=y
10;
for(i=x;i<y;i++)
{
int t=i,sum=0;
while(t!=0)
{
int tt=1,m=n;
while(m–) tt=tt*(t%10);
sum=sum+tt;
t=t/10;
}
if(sum==i) printf("%d\n",i);
}
return 0;
}
我的代码(Java):

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner In=new Scanner(System.in);
int x=1,y=1;
int n=In.nextInt();
for(int i=0;i<n-1;i++) x=x10;
for(int i=0;i<n;i++) y=y
10;
for(int i=x;i<y;i++)
{
int t=i,sum=0;
while(t!=0)
{
int tt=1;
for(int j=0;j<n;j++) tt=tt*(t%10);
sum=sum+tt;
t=t/10;
}
if(sumi) System.out.printf("%d\n", i);
}
}
}
我的代码(C++):
#include
using namespace std;
int main()
{
int n,i,x=1,y=1;
cin>>n;
for(i=0;i<n-1;i++) x=x10;
for(i=0;i<n;i++) y=y
10;
for(i=x;i<y;i++)
{
int t=i,sum=0;
while(t!=0)
{
int tt=1,m=n;
while(m–) tt=tt*(t%10);
sum=sum+tt;
t=t/10;
}
if(sum
i) cout<<i<<endl;
}
return 0;
}

转载至:https://blog.csdn.net/s136424/article/details/78323245

猜你喜欢

转载自blog.csdn.net/Zero_975/article/details/82808358