百度之星05-01【连续正整数】
2012-05-17 23:36
211 查看
/************************************************************************ 连续正整数( 10 分) 题目描述:一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。 输入数据:一个正整数,以命令行参数的形式提供给程序。 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的 最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大 打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合要求的序列,输出 “NONE” 。 例如,对于 15 ,其输出结果是: 1 2 3 4 5 4 5 6 7 8 对于 16 ,其输出结果是: NONE 评分标准:程序输出结果是否正确。 ************************************************************************/ /************************************************************************ 思路: num=x+...+y (x<y) => num=(1+...+y)-(1+...+x-1) => num=y*(y+1)/2-(x-1)*x/2=(y+x)(y-x+1)/2 => 2*num=(y+x)*(y-x+1) => 设2*num=a*b => y=(a+b-1)/2 x=(a-b+1)/2 ************************************************************************/ #include <stdio.h> #include <math.h> int main() { int num,dnum,a,b,x,y; int i=0,n=0,j=0,flag=0; while(1){ flag=0; printf("请输入一个正整数:"); scanf("%d",&num); dnum=2*num; n=(int)( sqrt((float)(dnum)) ); /************************************************************************/ //找出所有2*num=a*b的形式 for(i=n;i>=1;i--){ if(dnum%i==0){//可以整除 b=i; a=dnum/i; if( a>b && (a+b-1)%2==0 && (a-b+1)%2==0 ){ x=(a-b+1)/2; y=(a+b-1)/2; if(x<y){ for(j=x;j<=y;j++){ printf("%d ",j); } printf("\n"); flag=1; } } } } if(flag==0)printf("NONE\n"); } /************************************************************************/ return 0; }
vc6下编译通过,算法核心就是找出2*num的所有a*b相乘的情形,然后通过a和b可以得到x与y
相关文章推荐
- 2005年百度之星程序大赛初赛题目(连续正整数)
- 2017"百度之星"程序设计大赛 - 复赛 01,03,05
- 2005年百度之星初赛题目第一题(连续正整数)
- 2017 百度之星复赛题解 01、03、05
- 2017"百度之星"程序设计大赛 - 初赛(A) 01,05,06
- 编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列
- 【数论 / 数值】【RQNOJ】连续正整数
- 百度之星初赛(A)Hdu-6113.度度熊的01世界
- 蓝桥杯 ALGO-118 算法训练 连续正整数的和
- HDU 6113 度度熊的01世界【2017"百度之星"】【简单搜索判断联通块】
- 和为S的两个数字 VS 和为S的连续正整数
- 一个正整数有可能可以被表示为 m(m>=2) 个连续正整数之和,编写一个程序,输入一个正整数,然后找出符合这种要求的所有 连续正整数序列,若不存在这种序列,则打印None。
- 程序人生系列之新闻发布系统 01-05
- 连续正整数
- 实现连续正整数之和为某个特定值【算法】
- 蓝桥杯 连续正整数的和
- Java实例开发05-01 简单的多线程服务器
- 一个正整数如何分解为几个连续的正整数之和的形式
- 连续正整数之和
- Java语言介绍(04)开源项目(05)博客系统(01)Roller Weblogger