码迷,mamicode.com
首页 > 其他好文 > 详细

__________________________________________________2058_________________________________________后台数据不够。可能误判。

时间:2015-11-25 13:24:33      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

//错误代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
    int i,n,m,k,t,s;
    while(scanf("%d%d",&n,&m)&&(n||m))
    {
        s=(int)sqrt((double)2*m);
        if(n<s)
            k=n;
        else
            k=s;
        for(;k>=0;k--)
            if(m*2%(k+1)==0)
            {
                t=m*2/(k+1)-k;
                if(t%2==0&&t>0&&t<=2*n)
                {
                //    if(t/2+k>n)
                //        continue;
                    printf("[%d,%d]\n",t/2,t/2+k);
                }
            }
            printf("\n");
    }  
}
//正确代码:
/*咋说来:
做出来的方法是一个一个条件  慢慢减少  运算的步骤。
1:首先找出最长的那个连续之和的长度是多少。如果n和应该是多少的比较誰最小就选谁。
2:
*/        
#include<stdio.h>
#include<math.h>
int main()
{
    int i,n,m,k,t,s;
    while(scanf("%d%d",&n,&m)&&(n||m))
    {
        s=(int)sqrt((double)2*m);
        if(n<s)
            k=n;
        else
            k=s;
        for(;k>=0;k--)
            if(m*2%(k+1)==0)
            {
                t=m*2/(k+1)-k;
                if(t%2==0&&t>0&&t<=2*n)
                {
                    if(t/2+k>n)
                        continue;
                    printf("[%d,%d]\n",t/2,t/2+k);
                }
            }
            printf("\n");
    }  
}

 

__________________________________________________2058_________________________________________后台数据不够。可能误判。

标签:

原文地址:http://www.cnblogs.com/A-FM/p/4994300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!