当前位置:文档之家› 关于找出N位数的水仙花数的程序

关于找出N位数的水仙花数的程序

#include<iostream.h>
#include<conio.h>
//此程序可以找出任意输入的N位数中所包含的全部水仙花数
int xz(int b){int i=2,di=10;
while(i<b){di=di*10;i++;}
return di;}//不用输入函数自己利用已经确定的n的值求出其对应次幂的最小值用于取整作为底来使用
int cifang(int m,int mi){int jieguo;jieguo=m;
while(mi>1){jieguo=jieguo*m;mi=mi-1;}
return jieguo;}//此函数用于求一个数的mi次方其中m为被操作数
int kf(int k,int z){return k/z;}//利用取整求出一个数的最高次幂对应的值
int main(){int ji=0;
int n;//确定输入的n的值
int shu;//此数用于存放要寻找最高次幂的值的数
int di;//此数用于确定变化的用于取整的底
int wei;//此数用于存放所求数的某一位的值
int zuixiao;//此数是确定确定次幂的数的最小值
int zuida;//此数是确定确定次幂的数的最大值
int cifanghe=0;//此数用于存放次方的和
cout<<"请输入将要寻找水仙花数的次幂数n的值n=";
cin>>n;
shu=xz(n);
di=xz(n);
zuixiao=xz(n);
zuida=10*xz(n)-1;
while(shu>=zuixiao&&shu<=zuida)
{int quedingshu;//此数用于存放某一确定的数用于操作
int dibian;//此数用于替代对于某一具体的数的底
int cifanghe1;
cifanghe1=cifanghe;
dibian=di;
quedingshu=shu;
while(quedingshu>0){
wei=kf(quedingshu,dibian);
cifanghe1=cifanghe1+cifang(wei,n);
quedingshu=quedingshu-wei*dibian;
dibian=dibian/10;}
if(cifanghe1==shu){ji++;cout<<shu<<endl;}
shu=shu+1;}
cout<<n<<"位数中为水仙花数的数有"<<ji<<"个";
getch();
return 0;
}。

相关主题