zoukankan      html  css  js  c++  java
  • 杭电2058

    这是我的穷举源码,可惜超时了!哎!!!

    #include<iostream> using namespace std; int main() {

     int  n,m,i,j,a;

     while(scanf("%d%d", &n, &m), m+n)

     {                      

    for(i=1;i<=n;i++)     

    {   a=0;       for(j=i;j<=n;j++)     

      {       a=a+j;       

             if(a==m)      

    cout<<"["<<i<<","<<j<<"]"<<endl;      

    }     

    }     

    putchar('\n');  

    }

     return 0;

    }

    这是AC了的代码!!

    穷举还是是穷举,还不能任意穷举,要不超时,FUCK! 设初始值i,个数为j的数列满足要求,则(i+i+j-1)*j/2=m ==>(2*i-1+j)*j=2m

    所以j肯定小于等于sqrt(2*m),穷举 C语言源码:

    #include<iostream>

    #include<cmath>

    int main()

    { int n,m,i,j;

    while(scanf("%d%d",&n,&m)!=EOF&&m!=0||n!=0)

    {

     for(j=(int)sqrt(2*m);j>=1;j--)

    {

      i=(2*m/j+1-j)/2;;        

    if((2*i+j-1)*j/2==m)        

    printf("[%d,%d]\n",i,i+j-1); }        

    putchar(“\n");

    } return 0;

    }

  • 相关阅读:
    JavaScript 的 Promise
    MacOS copy图标shell脚本
    ExtJS 修改load paging时的参数
    JSONP
    8种跨域解决方案
    Ext Store Proxy Ajax
    ExtJS 自定义组件
    MacOS Apache配置
    xshell 上传 下载文件
    shell 内网主机存活探测器
  • 原文地址:https://www.cnblogs.com/xiohao/p/2710318.html
Copyright © 2011-2022 走看看