题意:给出N,满足N = A + (A + 1) + … + (A + P − 1). 求最大的P
解法:枚举出最大的P值满足上式
#include <iostream>
using namespace std;
#include <math.h>
#include <stdlib.h>
int n, p, a;
int main() {
cin >> n;
n = n*2;
int ans = 0;
for (int i = 1; i <= sqrt(n)+2; i++) if (n%i == 0) {
p = i;
a = ((n/p)-p+1)/2;
if (a > 0 && (2*a+p-1)*p == n) {
if (p > ans) ans = p;
}
p = n/i;
a = (n/p)-p+1;
if (a > 0 && (2*a+p-1)*p == n) {
if (p > ans) ans = p;
}
}
cout << (n/ans-ans+1)/2 << " " << ans << endl;
}