03-流程控制Z-水仙花数的6种解法
- 格式:pptx
- 大小:44.92 KB
- 文档页数:6
c语⾔⽔仙花数作业,c语⾔⽔仙花数(c语⾔⽔仙花数的编程)C语⾔计算出"⽔仙花"数,代码如下:运⾏结果如下:扩展资料 解题思路:这⾥提供了⼀种算法,即使⽤三个for循环确定三位数字,最外层的for循环即确定百位上的数字.“⽔仙花数”程序怎么写啊代码如下:#include int main() { printf("输出⽔仙花数:\n"); int i=100; for( ; i<1000; i++){ int num_0 = i%10; int num_1 =i/10%10; int num_2 = i/10/10%10; if.#include void main() { int a,b,c,s; s=a*100+b*10+c; for(a=1;aLZ你好~ ⾸先你要理解啥是⽔仙花数:⽔仙花数是指⼀个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本⾝。
(例如:1^3 + 5^3 + 3^3 = 153) 以上来⾃百.#include main() { int n,i,j,k; for(n=100;n把if语句块套在for循环⾥才⾏。
#include main() { int n,i,j,k; for(n=100;n<. k="n%10;" if .>最近学C语⾔ 作业⾥⾯有个写程序求⽔仙花数的 尝试得写了写 #include #.#include#include main() { int a,b,c,Y; int sum=100; while(sum<=999) { 百a=sum/100; b=sum%100/10; c=sum%10;Y=a*a*a+b*b*b+c*c*c; if(Y==sum)//判断.现写⼀个程序给我可以吗?跟⽹上其他有点差别就⾏了,不要复制粘贴的。
.#include int main(int argc, char **argv) { int i; int g ,s,b; //定义个位制,⼗位,百位上的知数 for(i=100;i<1000;i++){ //从100到1000查询⽔仙花数 g=i%10; //取出.严格的⽔仙花是三位数,并且其每位数的三次⽅的和等于它的本⾝。
1.“水仙花数”是指这样的数,其各位数字的立方和等于该数本身.编写程序求100至999的范围内有多少个水仙花数#include<stdio.h>main(){int dig,k,m,s,count;count=0;for(k=100;k<=999;k++){dig=0;s=0;dig=k/100;s=s+dig*dig*dig;m=k%100;while(m!=0){dig=m%10;s=s+dig*dig*dig;dig=m/10;s=s+dig*dig*dig;m=0;}if(s==k){count++;}}printf("%d\n",count);}2.(x,y,z)满足方程:x^2+y^2+z^2=55^2(注:要求x>y>z);则(x,y,z)称为方程的一个解.试求方程的整数解(包括负整数解)的个数.#include<stdio.h>main(){int x,y,z,s,n=0;for(x=-55;x<=55;x++)for(y=-55;y<x;y++)for(z=-55;z<y;z++){s=x*x+y*y+z*z;if(s==3025)n++;}printf("%d\n",n);}3.”水仙花数”是指这样的数,其各自数字的立方和等于该数本身.编写程序求100至400的范围内有多少的水仙花数. #include<stdio.h>main(){int dig,k,m,s,count;count=0;for(k=100;k<=400;k++){dig=0;s=0;dig=k/100;s=s+dig*dig*dig;m=k%100;while(m!=0){dig=m%10;s=s+dig*dig*dig;dig=m/10;s=s+dig*dig*dig;m=0;}if(s==k){count++;}}printf("%d\n",count); }4.50元的整币兑换成5元,2元,1元币值(三种币值均有,缺少一种或两种都计算在内)的方法有多少种.#include<stdio.h>main(){int a,b,c,s,count=0;for(a=0;a<=10;a++)for(b=0;b<=25;b++)for(c=0;c<=50;c++){s=5*a+2*b+c;if(s==50)count++;}printf("%d\n",count);}5.A,B,C是三个小于或等于100正整数,当满足1/A^2+1/B^2=1/C^2关系时,称为倒勾股数.求130<A+B+C<150且A>B>C的倒勾股数有多少组.#include<stdio.h>main(){int A,B,C,n=0;for(A=1;A<=100;A++)for(B=1;B<A;B++)for(C=1;C<=B;C++){if((A+B+C)>130&&(A+B+C)<150&&(1.0/(A*A)+1.0/(B* B)==1.0/(C*C)))n++;}printf("%d\n",n);}6.爱婴斯坦走台阶:有一台阶,如果每次走二阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶; 如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少?#include<stdio.h>main(){long int x;for(x=0;x<=10000000;x++){if(x%2==1&&x%3==2&&x%4==3&&x%5==4&&x%6 ==5&&x%7==0)break;}printf("%ld\n",x);}7.编程求[120,140]之间的弦数的个数(若某正整数的平方等于另两个正整数平方值和,则称该数是弦数.例如3^2+4^2=5^2,因此5是弦数).#include<stdio.h>main(){int i,j,k,s,count=0;for(k=121;k<=140;k++)for(i=1;i<140;i++)for(j=1;j<=i;j++){s=i*i+j*j;if(s==k*k){printf("%d ",k);count++;}}printf("[121,140]之间的弦数个数是:%d\n",count);}8.编写程序,计算1000以内有多少个这样的数,其十位为6且能被8整除.#include<stdio.h>main(){int a,b,c,i;int count=0;for(i=10;i<1000;i++){a=i%100;b=a/10;c=i%8;if(b==6&&c==0)count++;}printf("1000以内有%d个这样的数\n",count);}9.编写程序,计算在[0,60]的范围内有多少个数,其每位数的乘积大于每位数的和.#include<stdio.h>main(){int a,b,i;int count=0;for(i=0;i<=60;i++){a=i/10;b=i%10;if(a*b>a+b)count++;}printf("%d\n",count);}10.编写程序,求1到5000之间的能被5整除前若干个偶数之和,当和值大于500时退出,输出该和值.#include<stdio.h>main(){int i,a,s=0;for(i=1;i<=5000;i++){a=i%10;if(a==0)s+=i;if(s>500)break;}printf("%d\n",s);}11.编写程序,求出1~7000以内能被3或7整除的数的个数. #include<stdio.h>main(){int i,n=0;for(i=1;i<=7000;i++){if(i%3==0||i%7==0)n++;}printf("%d\n",n);}12.编写程序,求出100到500之间同时满足初3余2和处5余3条件的数的个数.#include<stdio.h>main(){int i,a,b,count=0;for(i=100;i<=500;i++){a=i%3;b=i%5;if(a==2&&b==3)count++;}printf("%d\n",count);}13.编写程序.求出3到100之间的所有非偶数非素数的数之和.main(){int a,i,j,s=0;for(i=3;i<=100;i++){for(j=2;j<i;j++){a=i%j;if(a==0)break;}if(a==0&&i%2!=0)s+=i;}printf("%d\n",s);}14.编写程序,求共有几组i,j,k符合算式ijk+kji=1534,其中I,j,k是[0,9]之间的一个整数且i<k.main(){int i,j,k,s=0,count=0;for(j=0;j<=9;j++)for(k=0;k<=9;k++)for(i=0;i<k;i++){s=i*101+j*20+k*101;if(s==1534)count++;}printf("%d\n",count);}15.编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是11的倍数,且A=B+C,即第2位数加上第3位数等于第1位数.#include<stdio.h>main(){int i,a,b,c,count=0;for(i=1000;i<10000;i++)a=i/1000;b=(i%1000)/100;c=((i%1000)%100)/10;if((i%11==0)&&(a-b-c==0))count++;}printf("%d\n",count);}16.编写程序,求三位数的偶数中,所有各位数字之和是15的倍数的数的个数.#include<stdio.h>main(){int i,a,b,c,count=0;for(i=100;i<1000;i+=2){a=i/100;b=(i%100)/10;c=(i%100)%10;if((a+b+c)%15==0)count++;printf("%d\n",count);}17.编写程序,求四位数的奇数中,所有各位数字之积(且不为0)是125的倍数的数的和.#include<stdio.h>main(){int a,b,c,d,i,s=0;for(i=1001;i<10000;i+=2){a=i/1000;b=(i%1000)/100;c=((i%1000)%100)/10;d=((i%1000)%100)%10;if(((a*b*c*d)%125==0)&&(a*b*c*d)!=0)s+=i;}printf("%d\n",s);}18.编写程序,求一正整数等差数列的前六项的和,该数列前四项之和是26,四项之积是880.#include<stdio.h>main(){int a,d;for(a=1;a<=6;a++)for(d=1;d<=4;d++){if(4*a+6*d==26&&a*(a+d)*(a+2*d)*(a+3*d)==880)printf("sum=%d\n",6*a+15*d);}}19.编写程序,求在5000以内能被17或者23整除的正整数个数.#include<stdio.h>main(){int i,count=0;for(i=1;i<5000;i++){if((i%17==0)||(i%23==0))count++;}printf("%d\n",count);}20.编写程序.求在四位数的偶数中.所有各位数字之和是30的倍数的数的和.#include<stdio.h>main(){int i,a,b,c,d,s=0;for(i=1000;i<10000;i+=2){a=i/1000;b=(i%1000)/100;c=((i%1000)%100)/10;d=((i%1000)%100)%10;if((a+b+c+d)%30==0)s+=i;}printf("%d\n",s);}21.编写程序.统计1000~9999之间的所有满足以下条件的四位数的个数.该书是一个完全平方数,且第1,2位数字之和为12,第3,4位数字之和为24.#include<stdio.h>main(){int s,s1,s2,s3,s4,i,count=0;for(i=32;i<100;i++){s=i*i;s1=s/1000;s2=s%1000/100;s3=s%1000%100/10;s4=s%1000%100%10;if(s1+s2==12&&s3*s4==24)count++;}printf("%d\n",count);}22.编写程序,已知:S=1+3+5+7+9+……,求S不大于9000的最大值.#include<stdio.h>main(){int i=1,s=0;while(s<=9000){s+=i;i+=2;}s=s-i+2;printf("s=%d\n",s);}23.编写程序,已知:S=2+4+8+16+32+…..,求S不大于1500的最大值.#include<stdio.h>main(){int i=1,s=0;while(s<1500){i=2*i;s=s+i;}s=s-i;printf("s=%d\n",s);}24.除1和他本身外,不能被其他整数整除的正整数称为素数(注:1不是素数,2是素数).若两数之差为2,则称两素数为双胞胎数,问[31,601]之间有多少对双胞胎数.#include "stdio.h"#include "math.h"int sushu(int n){ int i;for(i=2;i<=sqrt(n);i++)if(n%i==0)return 0;return 1;}main(){int i,count=0;for(i=31;i<=601;i++)if(sushu(i)&&sushu(i-2))count++;printf("%d\n",count);getch();}25.当m值为50时,计算下列公式的值:T=1-1/2-1/3-1/4-…..-1/m.要求:按四舍五入的方式精确到小数点后四位.#include<stdio.h>main(){int i;double T=1;for(i=2;i<=50;i++){T=T-1.0/i;}printf("%.4f\n",T);}26,当n的值为25时,计算下列公式的值:s=1+1/1!+1/2!+1/3!+1/n!.要求:按四舍五入的方式精确到小数点后四位.#include<stdio.h>main(){int i;float t=1,s=1;for(i=1;i<=25;i++){t=t*1.0/i;s=s+t;}printf("%.4f\n",s);}27.斐波那契数列的前两项是1,1,其后每一项都是前面两项之和,求:10000000以内最大的斐波那契额数?#include<stdio.h>main(){int s1=1,s2=1,a=0,i=0,t;while(a<10000000){a=s1+s2;i=a;t=s2;s2=i;i=t;t=s1;s1=i;i=t;}printf("%d\n",a-i);}28.计算y=1+2/3+3/5+4/7+…….+n/(2*n-1)的值,n=50,要求:按四舍五入的方式精确到小数点后两位,#include<stdio.h>main(){int n=50,i;float y=0;for(i=1;i<=n;i++){y=y+(float)i/(2*i-1);}printf("y=%.2f\n",y);}29 计算Y=X/1!-X^3/3!+X^5/5!-X^7/7!+……前20项的值(已知:X=2)。
题目、描述、输入、输出、输入样例、输出样例、测试输入、测试输出循环01:最大数写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。
输入39 28 5 63 18 27 0输出63测试:输入153 26 963 28 75 90 156 0输出963#include<iostream>using namespace std;int main(){int i,max=0;cin>>i;while(i!=0){if(i>max)max=i;cin>>i;}cout<<max<<endl;return 0;}循环02:素数输入正数n,判断n是否为素数。
若为素数则输出1,否则输出0。
(提示:素数是指只可以被1和其本身整除的正数(1除外))输入10输出0输入7输出1测试:输入9输出0#include<iostream>using namespace std;int main(){int n,i,d;cin>>n;for(i=2;i<n;i++){d=n%i;if(n%i==0)break;}if(n==i)cout<<"1"<<endl;elsecout<<"0"<<endl;return 0;}循环03:数列求和输入一个正整数n,计算前n项之和:1+1/4+1/7+1/10..+1/(3*n-2)。
输入5输出1.56978输入4输出1.49286#include<iostream>using namespace std;int main(){int i,n;double s=0;cin>>n;for(i=1;i<=n;i++)s+=1.0/(3*i-2);cout<<s<<endl;return 0;}循环04:西瓜卖几天n个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?说明:当西瓜个数为奇数时,卖一半为一半的整数,如当西瓜个数为5时,卖一半为卖2个。
题号题目类型字段1字段2第几题程序设计题流程控制if语句1 1编程:要求输程序设计题流程控制if语句1 2编程:根据以程序设计题流程控制if语句1 3编程:根据以程序设计题流程控制if语句1 4编程:输入三程序设计题流程控制if语句1 5编程:从键盘程序设计题流程控制if语句1 6编程实现四位程序设计题流程控制if语句1 7编程实现四位程序设计题流程控制if语句1 8编程:已知分9编程:输入3程序设计题流程控制if语句1程序设计题流程控制if语句1 10编程:已知分程序设计题流程控制if语句1 11编程:判定用12编程:从键盘程序设计题流程控制if语句1程序设计题流程控制if语句1 13编程:从键盘14初始化数组a程序设计题数组循环2程序设计题字符串循环2 15初始化一字符16计算一个4*4程序设计题数组循环217计算一个3*3程序设计题数组循环2程序设计题字符串循环2 18初始化一字符19编程计算一个程序设计题数组循环2程序设计题数组循环2 20初始化一矩阵程序设计题数组循环2 21初始化一矩阵22编程计算a[3程序设计题数组循环2程序设计题数组循环2 23编程实现:计程序设计题数组循环2 24编程实现:计程序设计题数组循环2 25一维数组中存程序设计题字符串循环2 26编程实现:在程序设计题数组循环2 27初始化一个存28已知4X4矩阵程序设计题数组循环229已知4X4矩阵程序设计题数组循环230函数void fu程序设计题函数指针与字符串331函数void fu程序设计题函数指针与字符串332编写函数voi程序设计题函数指针与字符串333编写函数voi程序设计题函数指针与字符串334编写函数voi程序设计题函数指针与字符串335编写函数voi程序设计题函数指针与字符串336编写函数voi程序设计题函数指针与字符串337编写函数voi程序设计题函数指针与字符串338编写函数voi程序设计题函数指针与字符串339编写函数voi程序设计题函数指针与字符串340编写函数int程序设计题函数指针与字符串341编制函数voi程序设计题函数指针与字符串342函数void de程序设计题函数指针与字符串343编写函数voi程序设计题函数指针与字符串344将一个正整数程序设计题流程控制循环1程序设计题流程控制循环1 45设有一分数列程序设计题流程控制循环1 46编写程序输出程序设计题流程控制循环/分支1 47编一程序,打程序设计题流程控制分支1 48输入一个同学程序设计题流程控制循环1 49编写程序:找50有1、2、3、程序设计题流程控制循环1程序设计题流程控制循环/分支1 51输入一行字符程序设计题流程控制循环1 52一个数如果恰53求一个3*3矩程序设计题数组循环1程序设计题数组循环1 54编程将一个数程序设计题函数指针与字符串2 55编写一个函数程序设计题流程控制循环2 56编写一个函数57编写函数voi程序设计题函数指针与字符串2 58编写函数voi程序设计题函数指针与字符串2程序设计题函数指针与字符串2 59编写一个函数60编写一个函数程序设计题函数参数传递2程序设计题函数参数传递2 61编写一个函数程序设计题函数参数传递2 62编写一个函数程序设计题函数指针与字符串2 63编写一个函数程序设计题函数指针与字符串2 64编写一个函数程序设计题函数指针与字符串2 65编写一个函数66编写函数voi程序设计题函数指针与字符串2程序设计题流程控制分支167 从键盘输入一68 初始化一个5程序设计题数组循环269 已知数组int程序设计题数组循环3程序设计题流程控制分支1 70计算分段函数71将一维数组中程序设计题数组循环2 72编制函数ITO程序设计题函数指针与字符串3程序设计题流程控制分支173 计算分段函数74 初始化一个5程序设计题数组循环275 写一个函数s程序设计题函数指针与字符串3程序设计题流程控制分支1 76实现两个数的程序设计题数组循环2 77求矩阵的所有78编写函数mys程序设计题函数指针与字符串3程序设计题流程控制分支1 79实现两个数的程序设计题数组循环2 80求矩阵的所有81编写函数mys程序设计题函数指针与字符串3程序设计题流程控制分支1 82实现两个数的程序设计题数组循环2 83求矩阵的所有84编写函数mys程序设计题函数指针与字符串3。
水仙花数水仙花什么是水仙花数春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:水仙花数是指一个 n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。
(例如:1^3 + 5^3 + 3^3 = 153)常见水仙花数三位的水仙花数共有4个:153,370,371,407;四位的水仙花数共有3个:1634,8208,9474;五位的水仙花数共有3个:54748,92727,93084;六位的水仙花数只有1个:548834;七位的水仙花数共有4个:1741725,4210818,9800817,9926315;八位的水仙花数共有3个:24678050,24678051,88593477…………使用高精度计算,可以得到超过INT类型上限的水仙花数:5: 930845: 927275: 547486: 5488347: 98008177: 42108187: 17417257: 99263158: 246780508: 246780518: 885934779: 1465112089: 9129851539: 4723359759: 53449483610: 467930777411: 3216404965011: 4002839422511: 4267829060311: 4938855060611: 3216404965111: 9420459191411: 4470863567911: 8269391657814: 2811644033596716: 433828176939137016: 433828176939137117: 3587569906225003517: 2189714258761207519: 328958298444318703219: 492927388592808882619: 449812879116462486920: 6310542598859969391621: 44917739914603869730721: 12846864304373139125223: 2790786500997705256781423: 3545259010403169193594323: 2787969489305407447140523: 2188769684112291628885824: 17408800593806529302372224: 188451485447897896036875(为环保起见,24位以上的水仙花数略)理论上,最大的水仙花数不超过34位。
2.3 自方幂数一个n位正整数如果等于它的n个数字的n次方和,该数称为n位自方幂数。
三位自方幂数又称水仙花数。
四位自方幂数又称玫瑰花数。
五位自方幂数又称五角星数。
六位自方幂数又称六合数。
试求出所有3~6位自方幂数。
2.3.1 三位水仙花数1、算法分析求自方幂数采用穷举判定法。
求n位自方幂数,对所有n位整数一一判定,如果其数字的n次方和等于它自身,则打印输出。
求n个数字的n次方和,常见有以下两种方法:1)设置n重循环,每位数设置循环;最高位从1~9,其余各位数从0~9。
n个数字的n次方的和即n个循环变量的n次方和。
2)从最小的n位数至最大的n位数循环,对每一个n位数分离其各个数字,然后求数字的n 次方和。
两种方法从循环次数来说是一样的,前者实施起来较为简便。
程序代码如下:#includevoid main(){int i,j,k,m1,m2;for(i=1;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++){m1=i*100+j*10+k; /*m1为三个数字分别为i,j,k的三位数*/m2=i*i*i+j*j*j+k*k*k; /*m2为三个数字的立方和*/if(m1==m2) printf("%3d ",m1); /*输出满足水仙花条件的数*/}printf("\n");}程序运行结果:水仙花数有:153 370 371 407该文章转载自无忧考网:关于回文数的两个程序2009-06-07 19:22#include<iostream>using namespace std;void Bw(char x[]){int n=strlen(x);int count=0;for(int i=0;i<n;i++){if(x[i] != x[n-i-1]){cout<<"不是回文数!"<<endl;break;}elsecount++;}if(count == n)cout<<"是回文数!"<<endl;}int main(){while(1){char *p=new char[];//动态数组的建立。
c语言水仙花数的解题思路摘要:I.引言- 介绍水仙花数的概念- 说明解题思路的背景和意义II.水仙花数的定义和性质- 定义水仙花数- 阐述水仙花数的性质III.解题思路- 分析水仙花数的组成- 设计计算方案- 编写C 语言程序实现计算IV.程序实现- 详细说明程序的实现过程- 给出完整的C 语言代码V.总结- 总结解题思路和程序实现- 提出优化方案和展望正文:I.引言水仙花数,也被称为阿姆斯特朗数,是指一个三位数,其各位数字的立方和等于该数本身。
例如,153 是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
水仙花数是一种特殊的三位数,具有很高的数学价值和趣味性。
在本文中,我们将介绍如何使用C 语言来求解水仙花数的问题。
II.水仙花数的定义和性质水仙花数是一种特殊的三位数,其各位数字的立方和等于该数本身。
例如,153 是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
根据这个定义,我们可以知道,水仙花数的每一位数字都是不同的。
此外,由于0 的立方等于0,所以水仙花数的百位数字不能为0。
根据这些性质,我们可以进一步分析水仙花数的组成。
III.解题思路要解决水仙花数的问题,我们需要设计一个计算方案。
首先,我们需要遍历所有可能的三位数,然后计算每个数的各位数字的立方和。
如果各位数字的立方和等于该数本身,那么这个数就是一个水仙花数。
为了提高计算效率,我们可以先判断每个数的百位数字是否为0,如果为0,则可以直接跳过。
此外,我们还可以使用C 语言的特性,如循环和条件语句,来简化程序的实现。
IV.程序实现下面是使用C 语言实现求解水仙花数的程序:```c#include <stdio.h>int main() {int m, n, i, sum;scanf("%d %d", &m, &n);for (i = m; i <= n; i++) {if (i / 100 == 0) {continue;}sum = i * i * i + i / 10 * i / 10 * i / 10 + i % 10 * i % 10 * i % 10;if (sum == i) {printf("%d", i);}}return 0;}```程序首先从用户输入中读取两个整数m 和n,表示需要查找的范围。
C语言程序设计100例之(4):水仙花数例4 水仙花数题目描述一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数。
输入格式没有输入输出格式若干行,每行1个数字。
输入样例无输出样例153* * *...* * *(输出被和谐了)(1)编程思路1。
对三位数n(n为100~999之间的整数)进行穷举。
对每个枚举的n,分解出其百位a (a=n/100)、十位b(b=n/10%10)和个位c(c=n%10),若满足a*a*a+b*b*b+c*c*c== n,则n是水仙花数。
(2)源程序1。
#include <stdio.h>int main(){int n, a, b, c; //n、a、b和c分别为三位数自身及其百位、十位和个位for(n=100 ;n<=999;n++){a=n/100;b=n/10%10;c=n%10;if(a*a*a+b*b*b+c*c*c== n)printf("%d\n",n);}return 0;}(3)编程思路2。
用一个三重循环对一个3位数的百位a(a的范围为1~9)、十位b(b的范围为0~9)和个位c(c的范围为0~9)进行穷举,在循环体中,计算出3位数n(n=100*a+10*b+c),然后进行判断,若满足a*a*a+b*b*b+c*c*c== n,则n是水仙花数。
(4)源程序2。
#include <iostream>using namespace std;int main(){int n, a, b, c; //n、a、b和c分别为三位数自身及其百位、十位和个位for(a=1 ;a<=9;a++)for (b=0; b<=9;b++)for(c=0;c<=9;c++){n=100*a+10*b+c;if(a*a*a+b*b*b+c*c*c== n)printf("%d\n",n);}return 0;}习题44-1 子数整数本题选自洛谷题库(https:///problem/P1151)题目描述对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:sub1=a1a2a3sub2=a2a3a4sub3=a3a4a5例如,五位数20207可以拆分成sub1=202sub2=020(=20)sub3=207现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1 ,sub2 ,sub3都可被K整除。
水仙花数水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。
(例如:1^3 + 5^3 + 3^3 = 153)。
水仙花数- 简介水仙花数在数论中,水仙花数是指这样一个数,其各个数之立方和等于该数。
例如:13+53+33=153。
十进制中的这样的数有:0、1、153、370、371、407,……(OEIS中的数列A005188),十进制的水仙花数共有88个,最大的是115,132,219,018,763,992,565,095,597,973,971,522,401共有39位数三进制中的这样的数有:0、1、2、12、122四进制中的这样的数有:0、1、2、3、313 水仙花数只是自幂数的一种,严格来说三位数的自幂数才成为水仙花数。
[1]附:其他位数的自幂数名字一位自幂数:独身数两位自幂数:没有三位自幂数:水仙花数四位自幂数:四叶玫瑰数五位自幂数:五角星数六位自幂数:六合数七位自幂数:北斗七星数八位自幂数:八仙数九位自幂数:九九重阳数十位自幂数:十全十美数水仙花数- 常见水仙花数水仙花数又称阿姆斯特朗数。
三位的水仙花数共有4个:153,370,371,407;水仙花数四位的水仙花数共有3个:1634,8208,9474;五位的水仙花数共有3个:54748,92727,93084;六位的水仙花数只有1个:548834;七位的水仙花数共有4个:1741725,4210818,9800817,9926315;八位的水仙花数共有3个:24678050,24678051,88593477…………使用高精度计算,可以得到超过INT类型上限的水仙花数:5: 930845: 927275: 547486: 5488347: 98008177: 42108187: 17417257: 99263158: 246780508: 246780518: 885934779: 1465112089: 9129851539: 4723359759: 53449483610: 467930777411: 3216404965011: 4002839422511: 4267829060311: 4938855060611: 3216404965111: 9420459191411: 4470863567911: 8269391657814: 28116440335967 16: 4338281769391370 16: 4338281769391371 17: 3587569906225003517: 2189714258761207519: 328958298444318703219: 492927388592808882619: 449812879116462486920: 6310542598859969391621: 44917739914603869730721: 12846864304373139125223: 2790786500997705256781423: 3545259010403169193594323: 2787969489305407447140523: 2188769684112291628885824: 17408800593806529302372224: 188451485447897896036875(为环保起见,24位以上的水仙花数略)理论上,最大的水仙花数不超过34位。
1关于水仙花数发表时间:2008-04-24 20:33:12 更新时间:2008-04-24 20:33:12 此题考试非常容易考到!!!!!!!!!!!需要注意!!!!!!!!水仙花数意思是一个三位数m,它有如下特点:m=a^3+b^3+c^3其中a为m的百位数,b为m的十位数,c为m的个位数譬如m=371则有a 为 3b 为7c 为 1a,b,c如何求?a为m的百位数:首先把m的小数点后移两位,用m/100就可以了吧~这时候把小数去掉就得到了百位数了.————如何去掉小数?fix()或者int()都可以!比如:要371的百位数。
可以用371/100=3.71 然后用fix(3.71)=3就求出来百位b为m的十位数:如何求十位?利用刚刚求出的百位数a,将m简化为一个十位数m-a*100比如:371-3*100=71这样再求这个十位数7就好求了。
仍然利用小数点前移然后求整fix(71/10)就求出b=fix(7.1)=7c为m的个位:跟求b一样~利用先前求出的a与b,将m的十位,百位都减去就OK啦~~~~这样,a与b与c就都有了然后用选择结构如果 m 满足这样的条件m=a^3+b^3+c^3 则m为一个水仙花数打印m否则m不是一个水仙花数最后,另m从100开始循环到500 结束。
程序是for m = 100 to 500a=fix(m/100)b=fix((m-a*100)/10)c=m-a*100-b*10if m=a^3+b^3+c^3 thenprint m;"为一个水仙花数"endifnext mPS: 你可以用这种方法另m从100开始到999循环,找出所有水仙花数可以找出从1000到9999 中找出有这样特点数m:m= a^4+b^4+c^4+d^4其中a,b,c,d分别为m的千位,百位,十位,个位。
这样的数叫做玫瑰花数!!!!!从10000到99999一样可以找出5次方的数。
并行计算与多核多线程技术课程报告班级学号姓名目录1.水仙花数的并行算法设计与实现 (7)1.1 .1功能描述1.1.2 解决方案1.2算法设计 (7)1.2.1 串行算法设计1.2.2并行算法设计1.3 基于OpenMP的并行算法实现 (8)1.3.1 代码及注释(变量名名字首字母开头)1.3.2 执行结果截图(体现串行时间、并行时间和加速比)1.3.3 遇到的问题及解决方案1.4 基于MPI的并行算法实现 (11)1.4.1 代码及注释(变量名名字首字母开头)1.4.2 执行结果截图(体现串行时间、并行时间和加速比)1.4.3 遇到的问题及解决方案1.5 基于Java(Runnable)的并行算法实现 (13)1.5.1 代码及注释(变量名名字首字母开头)1.5.2 执行结果截图(体现串行时间、并行时间和加速比)1.5.3 遇到的问题及解决方案1.6 基于Windows(.NET)的并行算法实现 (20)1.6.1 代码及注释(变量名名字首字母开头)1.6.2 执行结果截图(体现串行时间、并行时间和加速比)1.6.3 遇到的问题及解决方案2. 理论基础 (22)2.1 并行计算机体系结构、并行计算模型、并行算法的概念2.2并行计算机体系结构、并行计算模型、并行算法的关系2.3实例说明并行计算机体系结构、并行计算模型、并行算法的关系评价实践效果(正确度/加速比)理论基础难度工作量独立性认证结果1.水仙花数的并行算法设计与实现1.1 .1功能描述水仙花数又称阿姆斯特朗数。
是指一种三位数,其各个数之立方和等于该数本身。
水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。
1.1.2 解决方案并行思想:并行计算的原理就是把一个任务或者作业分配到多个处理器上并发执行。
这样一来可以大大提高计算的效率。
在本次课题中,要实现水仙花数的并行计算输出,就是把制定范围内的数用多个处理器进行计算,从而得到水仙花数的并行输出。
常用算法流程图及程序1、枚举法:1??47(百位和千位被涂抹掉了)是个五位数,要逐一输出所有能被57或67整除的五位数,并统计这样的五位数有几个。
2、枚举法:1? 4?7(十位和千位被涂抹掉了)是个五位数,要逐一输出所有能被57或67整除的五位数。
3、枚举法:逐一输出所有3位数水仙花数(即个位数3+十位数3+百位数 3 =这个数)4、枚举法:百鸡百钱问题:100元买100只鸡(三种鸡,5元一只公鸡,3元一只母鸡,1元三只小鸡),输出每一种买法的各种鸡的数量。
5、枚举法:输出1000以内的所有的素数之和6、冒泡排序:对十个数按非递减方式(即升序)冒泡排序,并输出排序后的这十个数。
其中i 是外循环变量,用来控制需要进行多少次处理,j 是内循环变量,用来控制每次处理需要进行多少次的俩俩比较。
7、顺序查找:100个数中顺序查找key,如找到则输出是第几个元素,否则输出0(如果输出0的话,表示没找到)。
8、对分查找:100个数(必须事先排好序)中对分查找key,如找到则输出是第几个元素,否则输出0(如果输出0的话,表示没找到)。
i 是用来表示对分查找的起点变量,j是用来表示对分查找的终点变量。
key=inputbox(“请输入i=1j=100Do while i<=j and r=0m=int((i+j)/2)If d(m)<>key thenIf d(m)<key theni=m+1Elsej=m-1End ifElser=mEnd ifLoopPrint r下面是赠送的团队管理名言学习,不需要的朋友可以编辑删除谢谢1、沟通是管理的浓缩。
2、管理被人们称之为是一门综合艺术--“综合”是因为管理涉及基本原理、自我认知、智慧和领导力;“艺术”是因为管理是实践和应用。
3、管理得好的工厂,总是单调乏味,没有任何激动人心的事件发生。
4、管理工作中最重要的是:人正确的事,而不是正确的做事。
5、管理就是沟通、沟通再沟通。
C语言水仙花数算法教程
C语言水仙花数算法教程
引导语;水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。
以下是店铺分享给大家的C语言水仙花数算法教程,欢迎参考学习!
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个“水仙花数”,因为153=1的.三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
2.程序源代码:
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10;/*分解出十位*/
k=n;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
【C语言水仙花数算法教程】。
1 从水仙花数说起程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。
程序设计是一门实践性很强的课程,通过实践锻炼出的程序设计能力将直接关系到人们的软件开发能力。
本章通过对水仙花数问题的不断扩展,来讨论程序设计能力的培养方法。
1.1 水仙花数的连营1.1.1 水仙花数在学习程序设计课程时,大多数读者一定采用循环结构编写过求解水仙花数的程序。
【实例1-1】水仙花数一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数。
✧编程思路对三位数n(n为100~999之间的整数)进行穷举。
对每个枚举的n,分解出其百位a (a=n/100)、十位b(b=n%100/10)和个位c(c=n%10),若满足a*a*a+b*b*b+c*c*c== n,则n是水仙花数。
✧源程序及运行结果#include <iostream>using namespace std;int main(){int n, a, b, c; //n、a、b和c分别为三位数自身及其百位、十位和个位for(n=100 ;n<=999;n++){a=n/100;b=n%100/10;c=n%10;if(a*a*a+b*b*b+c*c*c== n)cout<<n<<" ";}cout<<endl;return 0;}1.1.2 水仙花数的初步连营在“三国杀”游戏中,武将陆逊有一个技能是“连营”,其技能描述是:每当你失去最后一张手牌时,可立即摸一张牌。
借用这个概念,在程序设计实践中,我们设计了一个程序后,可以在这个程序的基础上,再进行扩展,提出相类似的另一个问题,再进行设计。
即解决一个问题后,再解决一个问题,类比解释就是失去一张手牌后,再摸一张牌。
在前面水仙花数问题的基础上,我们通过连营,可以提出下面几个问题。
⽔仙花数Python⽔仙花数只是的⼀种,严格来说3位数的3次幂数才称为⽔仙花数。
附:其他位数的⾃幂数名字⼀位⾃幂数:独⾝数两位⾃幂数:没有三位⾃幂数:⽔仙花数四位⾃幂数:四叶玫瑰数五位⾃幂数:五⾓星数六位⾃幂数:六合数七位⾃幂数:北⽃七星数⼋位⾃幂数:⼋仙数九位⾃幂数:九九重阳数⼗位⾃幂数:⼗全⼗美数⽔仙花数实现for i in range(100,1000):a = int(i/100%10)b = int(i/10%10)c = int(i%10)if a**3 + b**3 +c**3 == i:print("the num is",i)判断⼀个数是不是⾃恋数、⾃幂数、阿姆斯壮数或阿姆斯特朗数def narcissistic_number_1(num):length = len(str(num))count = lengthnew_num = 0while count:new_num += (num//(count-1)**10%10)**lengthcount -= 1else:if new_num == num:print("the num %d is narciss"%d)计算主要是关注Python的算数运算符:运算符描述实例+加 - 两个对象相加 a + b 输出结果 30-减 - 得到负数或是⼀个数减去另⼀个数 a - b 输出结果 -10*乘 - 两个数相乘或是返回⼀个被重复若⼲次的字符串a *b 输出结果 200/除 - x除以y b / a 输出结果 2%取模 - 返回除法的余数 b % a 输出结果 0**幂 - 返回x的y次幂a**b 为10的20次⽅,输出结果100000000000000000000//取整除 - 返回商的整数部分(向下取整)>>> 9//2 4 >>> -9//2 -5优先级 ** > * / % // > + -python3 的 / 是精确除法,Python2是截取整数。