1. 程式人生 > >2018.3.24模擬賽——(2)求和

2018.3.24模擬賽——(2)求和

題目大意:

解題思路:

暴力列舉。

源程式:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int sum,maxn,n,a[100001];
void work(int x,int y)
{
    int xy=y,yx=x;
    while(x>=y&&y>0)
    {
        x-=y;
        a[++sum]=y;
        y--;    
    }
    if (x>0
) a[++sum]=x; printf("%d\n",xy); sort(a+1,a+sum+1);//按字典序輸出 for (int i=1;i<=sum;i++) printf("%d\n",a[i]);//輸出 } int main() { freopen("sum.in","r",stdin); freopen("sum.out","w",stdout); scanf("%d",&n); for (int i=1;i<=666*n;i++) //列舉 if ((1+i)*i/2==n) { printf
("%d\n",i); return 0; } else if ((1+i)*i/2>n) if (((1+i)*i/2-n)%2==0)//判斷 { work(((1+i)*i/2-n)/2,i);//繼續列舉 return 0; } return 0; }