• HDU1299 Diophantus of Alexandria 素因子分解


    一个需要进行转化的题目。

    x = (n*(n+k))/k = n*n/k + n,最后求小于等于N且是N^2的因子的数的个数。

    代码如下:

    #include <cstdlib>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <map>
    using namespace std;
    
    int N;
    map<int,int>mp;
    map<int,int>::iterator it;
    
    int fun()
    {
        int ret = 1;
        for (it = mp.begin(); it != mp.end(); ++it) {
            ret *= (1 + 2 * it->second);
        }
        return ret;
    }
    
    int main()
    {
        int ca = 0, T, lim, sum;
        scanf("%d", &T);
        while (T--) {
            sum = 0;
            mp.clear();
            scanf("%d", &N);
            lim = (int)sqrt(N*1.);
            for (int i = 2; i <= lim; ++i) {
                while (N % i == 0) {
                    ++mp[i];
                    N /= i;
                }
            }
            printf("Scenario #%d:\n", ++ca);
            sum = fun();
            if (N != 1) {
                sum *= 3;
            }
            printf("%d\n\n", sum + 1 >> 1);
        }
        return 0;
    }
  • 相关阅读:
    学习Tomcat(三)
    TIME_WAIT 优化注意事项
    TIME_WAIT 优化
    TCP(一)
    TCP(二)
    TCP(三)
    5-14 练习题及答案
    5-14 进程池
    5-11 操作系统介绍
    5-8套接字socket
  • 原文地址:https://www.cnblogs.com/Lyush/p/2608030.html
Copyright © 2020-2023  润新知