NOJ - T025
[編輯] [转简体] (简体译文)
|
作者:huidong
| 分類:【編程】C 程序設計課程
[
3 瀏覽
0 評論
0 贊
0 踩
]
概要
將正整數 N 展開爲連續正整數之和的形式,求有幾種展開方式(方案數)
正文
方案数
Time Limit: 1000ms, Memory Limit: 10000KB , Accepted: 0, Total Submissions: 0
VIDEO1
Description
给定一个数字N,把它展开成连续正整数之和的式子,求有多少种方案。例如N=9时,有9 = 4 + 5 = 2 + 3 + 4三种,其中N自身为一种。
Input
输入N。
Output
输出方案数。
Sample Input
9
Sample Output
3
© 2002-2012 JDBSoft.
我的代碼
#include <stdio.h> #include <math.h> typedef unsigned long long ULL; int main() { ULL N; scanf("%llu", &N); ULL sum = 0; ULL m_end = 1 + (ULL)((1 + sqrt(1.0 + 8 * N)) / 2); for (ULL m = 1; m <= m_end; m++) { ULL numerator = 2 * N - (m * m - m); if (numerator && numerator % (2 * m) == 0) { sum++; //printf("%llu 項,從 %llu 開始\n", m, numerator / (2 * m)); } } printf("%llu", sum); return 0; }