题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1138
题意:中文题诶~
思路:假设 x=a1+(a1+1)+...+(a1+n-1)=n*a1+(n-1)*n/2;
所以:a1=(2*x-(n-1)*n)/(2*n);
那么我们只要枚举n就可以啦,接下来我们还有确定n的范围:
x=(a1+an)*n/2=(a1+a1+(n-1)*d)*n/2=(n+1)*n/2; 即(n+1)*n=2*x, 所以n<sqrt(2*x);
又,题目中要求n>=2,所以我们只要枚举n从sqrt(2*x)到2就好啦.....
代码:
1 #include <bits/stdc++.h>
2 using namespace std;
3
4 int main(void){
5 int x;
6 bool flag=true;
7 cin >> x;
8 int i=sqrt(2*x);
9 while(i>=2){
10 int gg=(2*x-(i-1)*i)/(2.0*i);
11 if(gg==(2*x-(i-1)*i)/(2.0*i)){
12 cout << gg << endl;
13 flag=false;
14 }
15 i--;
16 }
17 if(flag){
18 cout << "No Solution" << endl;
19 }
20 return 0;
21 }