前言
依据十分的水,其实我依据是不想写的,依旧是老师要求的QAQ
正题
大意
有一个数S,通过然后在1-n自然数前加上“+”或“-”使其等于S,求最小的n
解题思路
枚举,然后从大的开始,可以加-号的就加
代码
#include<cstdio>
using namespace std;
int S,sum,w,i,p,mark[1001];
int main()
{scanf("%d",&S);while (true){i++;sum+=i;if (sum<S) continue;w=sum;p=0;for (int j=i;j>=1;j--){if (w-j*2>=S){w-=j*2;mark[++p]=j;}if (w==S) break;}if (w==S) break;}printf("%d\n",i);for (i=p;i>=1;i--){printf("%d\n",mark[i]);}
}