欢迎来到天天文库
浏览记录
ID:62041973
大小:343.00 KB
页数:49页
时间:2021-04-16
《2013年全国软件大赛赛前辅导题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、个人收集整理勿做商业用途231.尼科彻斯定理 验证尼科彻斯定理,即:任何一个整数的立方都可以写成一串连续奇数的和。××*问题分析与算法设计 本题是一个定理,我们先来证实它是成立的。对于任一正整数a,不论a是奇数还是偶数,整数(a×a-a+1)必然为奇数。构造一个等差数列,数列的首项为(a×a-a+1),等差数列的差值为2(奇数数列),则前a项的和为: a×((a×a-a+1))+2×a(a-1)/2 =a×a×a-a×a+a+a×a-a =a×a×a 定理成立。证毕。通过定理的证实过程可知L所要求的奇数数列的首项为(a×a-a+1),长度为a。编程的算
2、法不需要非凡设计,可按照定理的证实过直接进行验证。*程序与程序注释#include<stdio.h>voidmain(){inta,b,c,d;printf("Pleaseentera number:"); scanf("%d",&a); /*输入整数*/ b=a*a*a; /*求整数的三次方*/ printf("%d*%d*%d=%d=",a,a,a,b); for(d=0,c=0;c3、":"%d",a*a-a+1+c*2); } if(d==b)printf("Y");/*若条件满足则输出“Y”*/ elseprintf("N"); /*否则输出“N”*/}*运行结果 1)Pleaseenteranumber:13 13*13*13=2197=157+159+161+163+165+167+169+171+173+175+177+179+181Y 2)Pleaseentera number:14 14*14*14=2744=183+185+187+189+191+193+195+197+199+201+203+205+207+204、9Y*思考题 本题的求解方法是先证实,在证实的过程中找到编程的算法,然后实现编程。实际上我们也可以不进行证实,直接使用编程中常用的试探方法来找出该数列,验证该定理。请读者自行设计算法。当然这样得到的数列可能与用定理方法得到的数列不一样。个人收集整理勿做商业用途2.回文数的形成任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数后重复以上步聚,则最终可得到一个回文数。请编程验证。*问题分析与算法设计回文数的这一形成规则目前还属于一个猜想,尚未得到数学上的证实。有些回文数要经历上百个步聚才能获得。这里通过编程验证。 题目中给出的处理过程很清楚,算法不5、需要非凡设计。可按照题目的叙述直接进行验证。*程序与程序注释#include6、其反序数相加后是否为回文数*/ { if(m+n>=MAX) { printf("input error,break."); break; } else { printf("[%d]:%ld+%ld=%ld\n",++count,n,m,m+n); n+=m; } } printf("[%d]:%ld+%ld=%ldn",++count,n,m,m+n); /*输出最后得到的回文数*/ printf("Herewereachedtheaimatlast!");}longre(long inta) /*求输入整数的反序数7、*/{ longintt; for(t=0;a>0;a/=10)/*将整数反序*/ t=t*10+a%10;个人收集整理勿做商业用途 returnt;}intnonres(longints)/*判定给定的整数是否是回文数*/{ if(re(s)==s) return1; /*若是回文数则返回1*/elsereturn0; /*否则返回0*/}*运行结果3.自动发牌 一副扑克有52张牌,打桥牌时应将牌分给四个人。请设计一个程序完成自动发牌的工作。要求:黑桃用S(Spaces)表示;红桃用H(Hearts)表示;方块用D(Diamonds)
3、":"%d",a*a-a+1+c*2); } if(d==b)printf("Y");/*若条件满足则输出“Y”*/ elseprintf("N"); /*否则输出“N”*/}*运行结果 1)Pleaseenteranumber:13 13*13*13=2197=157+159+161+163+165+167+169+171+173+175+177+179+181Y 2)Pleaseentera number:14 14*14*14=2744=183+185+187+189+191+193+195+197+199+201+203+205+207+20
4、9Y*思考题 本题的求解方法是先证实,在证实的过程中找到编程的算法,然后实现编程。实际上我们也可以不进行证实,直接使用编程中常用的试探方法来找出该数列,验证该定理。请读者自行设计算法。当然这样得到的数列可能与用定理方法得到的数列不一样。个人收集整理勿做商业用途2.回文数的形成任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数后重复以上步聚,则最终可得到一个回文数。请编程验证。*问题分析与算法设计回文数的这一形成规则目前还属于一个猜想,尚未得到数学上的证实。有些回文数要经历上百个步聚才能获得。这里通过编程验证。 题目中给出的处理过程很清楚,算法不
5、需要非凡设计。可按照题目的叙述直接进行验证。*程序与程序注释#include
6、其反序数相加后是否为回文数*/ { if(m+n>=MAX) { printf("input error,break."); break; } else { printf("[%d]:%ld+%ld=%ld\n",++count,n,m,m+n); n+=m; } } printf("[%d]:%ld+%ld=%ldn",++count,n,m,m+n); /*输出最后得到的回文数*/ printf("Herewereachedtheaimatlast!");}longre(long inta) /*求输入整数的反序数
7、*/{ longintt; for(t=0;a>0;a/=10)/*将整数反序*/ t=t*10+a%10;个人收集整理勿做商业用途 returnt;}intnonres(longints)/*判定给定的整数是否是回文数*/{ if(re(s)==s) return1; /*若是回文数则返回1*/elsereturn0; /*否则返回0*/}*运行结果3.自动发牌 一副扑克有52张牌,打桥牌时应将牌分给四个人。请设计一个程序完成自动发牌的工作。要求:黑桃用S(Spaces)表示;红桃用H(Hearts)表示;方块用D(Diamonds)
此文档下载收益归作者所有