匯東網


NOJ - T025

[編輯] [转简体]
|
作者:huidong | 分類:【編程】C 程序設計課程
[ 3 瀏覽 0 評論 0 贊 0 踩 ]

概要
將正整數 N 展開爲連續正整數之和的形式,求有幾種展開方式(方案數)

正文

File Name:T025.cpp

方案数

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;
}


[ 0] [ 0]


 評論區  0 條評論

+ 添加評論