ZKX's LAB

21位的水仙花数,用c++怎样解决? 水仙花数的计算机解法

2020-07-27知识10

21位的水仙花数,用c++怎样解决? 我这里大概运行30s,耐心等几十秒吧,给,代码如下:includeincludeincludeincludeusing namespace std;define N 10define M 21/如果要算其他位数,修改此数字栈*typedef struct stack{int*base,*top;int len;}Stack;void InitStack(Stack&S){S.base=(int*)malloc((M+1)*sizeof(int));S.top=S.base;S.len=M;}int pop(Stack&S,int&e){if(S.base=S.top)return 0;e=*-S.top;return 1;}int push(Stack&S,int&e){if(S.top-S.top>;=S.len)return 0;S.top=e;S.top+;return 1;}int GetLen(Stack S){if((S.top-S.base)>;=M)return 1;return 0;}int Get(Stack&S){return*(S.top-1);}int Empty(Stack S)/用来结束主循环{return*S.base;}void SetZero(int s[])/置零{int i;for(i=0;i;i+){s[i]=0;}}void StatNumber(int num[],int s[])/统计num[]中 0~9出现的次数 结果放到S[]中{int i=0;SetZero(s);while(i[i]。1){switch(num[i+]){case 0:s[0]+;break;case 1:s[1]+;break;case 2:s[2]+;break;case 3:s[3]+;break;case 4:s[4]+;break;case 5:s[5]+;break;case 6:s[6]+;break;case 7:s[7]+;break;case 8:s[8]+;break;case 9:s[9]+;break;}}}void 。c语言 编写一个判断是否为水仙花数的函数,并通过调用该函数打印输出所有水仙花数。 #includeincludeint narcissistic(int number);void PrintN(int m,int n);int main(){int m,n;scanf(\"%d%d\",&m,&n);if(narcissistic(m))printf(\"%d is a narcissistic number\\n\",m);PrintN(m,n);if(narcissistic(n))printf(\"%d is a narcissistic number\\n\",n);return 0;}int narcissistic(int number){int i,n=0,sum=0,cnt=0;n=number;while(n){cnt+;n/10;}n=number;while(n){i=n%10;sum+(int)pow(i,cnt);n/10;}if(sum=number)return 1;elsereturn 0;}void PrintN(int m,int n){int i;for(i=m+1;i;i+)if(narcissistic(i))printf(\"%d\\n\",i);}扩展资料:printf函数使用注意事项1、域宽d:按整型数据的实际长度输出。如果想输出指定宽度可以指定域宽,%md->;,m域宽,打印出来以后,在控制台上,显示m位;62616964757a686964616fe78988e69d8331333431353366如果要打印的数的位数如果超过我们设定m则原样输出;如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:如果m为正数,则左对齐(左侧补空白);如果m为负数,则右对齐(右侧补空白)。2、转义字符如果想输出字符\"%\",则应该在“格式控制”字符串中用连续两个%表示。如:printf(\"%f%。求大神帮忙编程,把VB语言发给我: 给你一个(1)的答案,其他它相似的:Dim i As IntegerDim a As IntegerDim b As IntegerDim c As IntegerFor i=100 To 999 a=i \\ 100 b=(i Mod 100)\\ 10 c=i Mod 10 If a^3+b^3+c^3=i.求教一个高中数学题 关于水仙花数程序的 看看这样,looper=100dolooper=looper+1a=[looper/100](取整)抄b=[(looper-a*100)/10];c=looper-100*a-10*b;if a*a*a+b*b*b+c*c*c=looper thenprint\"n=;looperend ifloop untill looper>;=1000end这么写也知行 但是就是麻烦了,a=0,b=-1,c=0doa=a+1dob=b+1doc=c+1if 100*a+10*b+c-a*a*a-b*b*b-c*c*c=0 thenprint\"n=;100*a+10*b+cend ifloop untill c=9loop untill b=9loop untill a=9end其实道理是一样道的c语言编程调用函数求水仙花数 水仙花数是指一个 n 位数(n≥3),每个位上的数字的 n 次幂之和等于它本身。(例如:1^3+5^3+3^3=153)。所以可以依次通过模除求得每个位上的值,然后做n次幂后相加,再判断是否与本身相等,从而得到是否为水仙花数的结论。以求所有三位数水仙花数为例,代码如下,其它相似。includeincludeincludeint cube(const int n){/计算立方。如果是四位则是四次方,以此类推。return n*n*n;}int isNarcissistic(const int n){/计算是否为水仙花数。int hundreds=n/100;百位int tens=n/10-hundreds*10;十位int ones=n%10;个位return cube(hundreds)+cube(tens)+cube(ones)=n;如果相等,则为水仙花数。}int main(void){int i;for(i=100;i;i){/对所有三位数判断。if(isNarcissistic(i))/如果是则输出。printf(\"%d\\n\",i);}return 0;}编程实现,求100至499之间的水仙花数,即各位数字的立方和恰好等于该数 AS3编程:var i:uint=1,j:uint,k:uint;定义三个非2113负整数变量,分别表5261示三位数的,百位数字4102、十位数字、个位数字,var arr:Array=[];定义一1653个空的数组用于存放符合条件的三位数,以下用三重循环逐个寻找符合条件的三位数,for;i;i+){for(j=0;j;j+){for(k=0;k;k+){var m:uint=100*i+10*j+k;定义一个变量等于由i、j、k表示的三位数,if(m=i*i*i+j*j*j+k+k+k)arr.push(m)}}}}/将符合条件的数添加到数组,到此循环结束,trace(arr);输出语句以上程序与c语言除了定义变量和输出语句外,核心语句的三重循环应该无异21位的水仙花数,用c++怎样解决? 我这里大概运行30s,耐心等几十秒吧,给,代码如下:includeincludeincludeincludeusing namespace std;define N 10define M 21/如果要算其他位数,修改此数字void SetZero(int s[])/置零{int i;for(i=0;i;i+){s[i]=0;}}void StatNumber(int num[],int s[])/统计num[]中 9出现的次数 结果放到S[]中{int i=0;SetZero(s);while(i=10){if(sum[i][m+1]=-1)sum[i][m+1]=0;sum[i][m+1]+sum[i][m]/10;sum[i][m]=sum[i][m]%10;}}}}}void Print(int sum[])/输出水仙花数{int i=M-1;if(sum[i]){for;i>;=0;i-){\\x05cout

#水仙花数

随机阅读

qrcode
访问手机版