题目
一个整数n可以可以被分解成连续的整数的和,求最长的分解。
分析
数学,枚举。
取p
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int N, A, B;
while (~scanf("%d", &N) && N != -1) {
int n_m = 1;
int end = int(sqrt(2.0*N));
for (int i = 2; i <= end; ++ i) {
if ((2*n)%i == 0 && (2*n/i+i)%2 == 1) {
if ((2*n)/i < i+1) {
break;
}
n_m = i;
}
}
//printf("n - m = %d\nn + m + 1 = %d\n", n_m, 2*n/n_m);
A = (2*n/n_m - n_m + 1)/2;
B = (2*n/n_m + n_m - 1)/2;
printf("%d = %d + ... + %d\n", N, A, B);
}
return 0;
}