zoukankan      html  css  js  c++  java
  • A New Function LightOJ

    题意 求 1 - n的的所有数的因子(不包括自身和1)和

    对于一个数 i  ,以i为因子的数的个数为 n/i  因为不能包括自身 所以 减一 即  n/i-1  这样遍历每一个数 累加即可  

    但复杂度较高 所以要降低一下复杂度

    求2 - sqrt(n)的即可。。sqrt之后的 我们用每次求出的n/i  看是否比sqrt(n)大, 如果大的话 则从sqrt(n)+1 到 n/i的数 也是小于n的数的因子之一 加上就好了

    #include <iostream>
    #include <cstdio>
    #include <sstream>
    #include <cstring>
    #include <map>
    #include <set>
    #include <vector>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <cmath>
    #define MOD 2018
    #define LL long long
    #define ULL unsigned long long
    #define Pair pair<int, int>
    #define rap(a, n) for(int i=a; i<=n; i++)
    #define mem(a, b) memset(a, b, sizeof(a))
    #define _  ios_base::sync_with_stdio(0),cin.tie(0)
    //freopen("1.txt", "r", stdin);
    using namespace std;
    const int maxn = 10010, INF = 0x7fffffff;
    
    int main()
    {
        int T, kase = 0;
        cin >> T;
        while(T--)
        {
            LL n, res = 0;
            cin >> n;
            LL m = sqrt(n+0.5);
            rap(2, m)
            {
                res += (n / i - 1)* i;
                if(n/i > m)
                {
                   LL p = n/i;
                   res += (p - m) * (m+1+p) / 2;  //等差数列求和公式
                }
            }
            cout<< "Case "<< ++kase << ": "<< res <<endl;
    
        }
    
    
        return 0;
    }
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/9349693.html
Copyright © 2011-2022 走看看