zoukankan      html  css  js  c++  java
  • HDU2601 An easy problem

    http://acm.hdu.edu.cn/showproblem.php?pid=2601

      题意:是将一个数 N 分解成 i * j + i + j 有多少种分解方式。

      思路:以 i 作为一个维度,j 作为第二维度进行循环,则 N = i * j + i + j = i * ( j + 1 ) + i ; 当 j = j + 1 时 N' = i * ( j + 1 )  + i + j + 1 = N + i + 1; 所以只要进行一为循环就可以了,判定 ( N - i ) % ( i + 1 ) == 0 ? 就可以了。

      代码:

    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <cstring>
    #include <iostream>
    using namespace std;

    int main()
    {
    int T;
    long long N;
    scanf( "%d", &T );
    while( T-- )
    {
    scanf( "%I64d", &N );
    long long lim = ( long long )sqrt( double ( N + 1 ) ) - 1, cnt = 0;
    for( long long i = 1; i <= lim; ++i )
    {
    if( ( N - i ) % ( i + 1 ) == 0 )
    {
    cnt++;
    }
    }
    printf( "%I64d\n", cnt );
    }
    return 0;
    }
  • 相关阅读:
    POJ 2689
    NEFU 109
    HDU 2098
    NEFU 2
    NEFU 117
    NEFU 84
    POJ 1061
    NEFU116 GCD
    NEFU 115
    HDU 2099
  • 原文地址:https://www.cnblogs.com/Lyush/p/2272650.html
Copyright © 2011-2022 走看看