博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

ubuntuer zone

生活可以将就,生活也可以讲究 Free PageRank Checker
   ubuntuer.cublog.cn
关于作者  
姓名:kenthy
职业:学生
年龄:24
位置:武汉
个性介绍:There is only one person in the world to decide what i am going to do and that is me
联系方式:
msn:jimmy_whut@hotmail.com

我的分类  




百度之星2005初赛第一题答案


题目描述:一个正整数有可能可以被表示为 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

评分标准:程序输出结果是否正确。

#include <stdio.h>
#include <stdlib.h>
#define N 20

int main()
{
    int flags=0;
    int count=0;
    int i;
    int j;
    int k;;
    int sum=0;
    int end=0;
    for(i=1;i<N;i++)
    {
        //printf("This time i is %d\n",i);


        sum += i;
        for(j=i+1;j<N && sum<N;j++)
        {
            sum += j;
            if(sum == N)
            {
                end=j;
                break;
            }//else if(sum > n)


                
        }
        //printf("sum >n\n");


        sum = 0;
        if((end==0)) continue;
            else
        {
            count=i;
            for(k=0;k<=end-i;k++)
            {printf("%d ",count++);}
            flags=1;
            printf("\n");
       }
        end=0;sum=0;
        
    
    }
    if (flags==0)
            printf("NONE\n");
return 0;

}

 发表于: 2008-11-04,修改于: 2008-11-04 21:43 已浏览905次,有评论3条 推荐 投诉

  网友评论
  本站网友 时间:2009-08-30 09:14:23 IP地址:218.25.117.★
不对吧,自己上机试一下,N=15都不对

  ubuntuer 时间:2009-08-30 09:48:27 IP地址:218.104.96.★
我自己是跑过了的,是对的!!!!
这题是N久之前写的了,看这个
 printf("Please input x:");
    scanf("%d", &x);
    for(n = 2; n * n < x * 2; ++ n){
        int a = (2 * x / n - n + 1) / 2;

         /*下面这句也许从数学角度来说是恒等式,这就是程序的妙处^_^,跑一下你就知道了*/
        if( n * a + n * (n - 1) / 2 == x){
            for(i = 0; i < n; ++i)
                printf("%d ", a + i);
            printf("\n");
            exist = 1;
        }
    }
    
    if(!exist)
        printf("none\n");


  ubuntuer 时间:2009-08-30 09:50:16 IP地址:218.104.96.★
还有blog里的东西只要不是转载的,我贴的code都是我运行正确之后的...
在你那里不对?怎么不对?环境?error code帖上,不要就丢个不对...


  发表评论



Copyright © 2001-2010 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.0216

京ICP证041476号