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;

    }

  • 相关阅读:
    [Luogu] 封锁阳光大学
    [other] Div
    [USACO11DEC] 牧草种植Grass Planting
    [Luogu] 仓鼠找sugar
    [USACO15DEC]最大流Max Flow
    [noip-2013] 货车运输
    [模板] 普通平衡树
    [Luogu] 树链剖分
    [ZJOI2008] 树的统计Count
    大组合数取模
  • 原文地址:https://www.cnblogs.com/xiohao/p/2710318.html
Copyright © 2011-2022 走看看