您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 第02章 简单数学题
第02章节简单数学题CCUTSOFTACMTeamTheExerciseFromChapter01HODJ2006求奇数的乘积输入输出格式(HDOJ1094式的输入)while(scanf(“%d”,&n)!=EOF){while(n--){scanf(“%d”,&a);}}三点疑问1.判断用i%2==1正确不?假如i为负奇数2.c赋初值c=0?累乘,c=1;3.c=1;赋值语句放哪个位置?HDOJ2006求奇数的乘积参考代码#includestdio.hintmain(){intn,a,c;while(scanf(%d,&n)!=EOF){c=1;while(n--){scanf(%d,&a);if(a%2!=0)c*=a;}printf(%d\n,c);}return0;}HDOJ2010水仙花数输入数据有多组,每组占一行,包括两个整数m和n(100=m=n=999)。输出所有在给定范围内的水仙花数如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开没有就输出noHDOJ2010水仙花数1、设置标记flag,记录m与n之间是否有水仙花数2、本题告诉m=n,故不需要考虑mn的情况,如果不告诉,需要自己首先判断mn大小3、巧妙地利用上面已经声明的标记flag来控制格式输入输出if(flag==0)printf(%d,m);elseprintf(%d,m);利用flag的值判断是否是第一个输出第二个(else)输出的是空格+数字if(flag==0)printf(no\n);elseprintf(\n);如果不存在水仙花,输出no,否则输出换行结束本组数据输出HDOJ2010水仙花数源代码intm,n,flag,a,b,c;while(scanf(%d%d,&m,&n)!=EOF){flag=0;for(;m=n;m++){a=m/100;b=m/10%10;c=m%10;if(a*a*a+b*b*b+c*c*c==m){if(flag==0)printf(%d,m);elseprintf(%d,m);flag++;}}if(flag==0)printf(no\n);elseprintf(\n);}简单入门(最大公约数)例题:HDOJ1108最小公倍数课下习题HDOJ1019LeastCommonMultipleHDOJ2028LowestCommonMultiplePlus(两题几乎一样一样的)最大公约数与最小公倍数最大公约数(greatestcommondivisor,简写为gcd;或highestcommonfactor,简写为hcf),指某几个整数共有因子中最大的一个。最小公倍数(LeastCommonMultiple,缩写L.C.M.),lcm(m,n)=m*n/gcd(m,n)有时,由于数字较大,m*n可能过界,所以最好写成m/gcd(m,n)*n欧几里得算法(用辗转相除法求两个自然数m和n的最大公约数并假设m=n)//辗转相除法假设m=n(mn也无所谓,多一次循环呗)intgcd(intm,intn){intr=m%n;while(r!=0){m=n;n=r;r=m%n;}returnn;}求最大公约数(欧几里得转转相除法)递归写法://递归假设m=nintgcd(intm,intn){intr;while((r=m%n)!=0){returngcd(n,r);}returnn;}求最大公约数(辗转相减法)欧几里得在《几何原本》写的其实是相减,而不是求余其算法用C语言实现如下:intgcd(intx,inty){while(x!=y){if(xy)x=x-y;elsey=y-x;}returnx;}1108最小公倍数源代码#includestdio.hintgcd(inta,intb){returnb==0?a:gcd(b,a%b);}intmain(){intm,n;while(scanf(%d%d,&m,&n)!=EOF)printf(%d\n,m/gcd(m,n)*n);return0;}HDOJ1019LeastCommonMultiple源码#includestdio.hintgcd(inta,intb){returnb==0?a:gcd(b,a%b);}intlcm(inta,intb){returna/gcd(a,b)*b;}HDOJ1019LeastCommonMultiple源码intas,t;intc,n,i;scanf(%d,&c);while(c--){scanf(%d,&n);as=1;for(i=0;in;i++){scanf(%d,&t);as=lcm(as,t);}printf(%d\n,as);}简单数学HDOJ2041超级楼梯课下习题HODJ2044小蜜蜂HDOJ1012uCalculatee课下习题HDOJ1056HangOver附加题:HDOJ2032杨辉三角形HDOJ1040AseasyasA+B(排序)HDOJ2041超级楼梯#includestdio.hintmain(){inti,n;inta[41]={1,1,2};for(i=3;i41;i++)a[i]=a[i-2]+a[i-1];scanf(%d,&n);while(n--){scanf(%d,&i);printf(%d\n,a[i-1]);}return0;}HDOJ2044小蜜蜂#includestdio.hintmain(){intn,i,a,b;longlongc[50]={1,1};for(i=2;i50;i++)c[i]=c[i-1]+c[i-2];scanf(%d,&n);while(n--){scanf(%d%d,&a,&b);printf(%I64d\n,c[b-a]);}return0;}longlong型数据64位小蜜蜂题可以用double避开大数“%.0lf”大致范围:int4Byte32bit十位数(20亿)-2147483648-2147483647longlong8Byte64bit十九位数(900亿亿)调试技巧1、调试程序时,如果需要,可以在程序尾部,return0之前,加上system(“pause”);有时需要:#includestdlib.h或者有时可以多加一个getchar();2、调试程序时,如果遇到EOF结束的数据,可以使用Ctrl+Z结束输入3、学会用输出中间结果来调试程序(判断到底问题出在哪块)国庆期间软任务1、继续了解ACM/ICPC登陆一些官网或者看一些杰出的ACMer的博客增加自己对这项赛事的了解2、自己通过看书、上网、查资料的方式,了解字符串输入输出函数的相关问题比如strlen()、memset()、memcpy()等3、了解一些基本算法,复习数据结构学过的算法国庆期间硬任务HDOJ全中文题目从2000开始往下做,至少做20~30道有能力、有时间、有兴趣的同学可以多做(绝对不拦着)BestWishs!祝大家过一个愉快的国庆节!国庆节快乐!
本文标题:第02章 简单数学题
链接地址:https://www.777doc.com/doc-3352813 .html