• zzuli1783: 简单的求和---求因子和


    1783: 简单的求和


    Description

     定义f(i)代表i的所有因子和(包括1和i),给定一个l,r。求f(l)+f(l+1)+...+f(r)。

    Input

     第一行输入一个t(t<1000),代表有t组测试数据,接下来每行输入两个数字l,r,(1<=l<=r<=1000000)。

    Output

     每行输出一个整数,代表和。

    Sample Input

    2 1 2 3 4

    Sample Output

    4 11
     
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstdlib>
    using namespace std;
    #define N 1000002
    #define INF 0x3f3f3f3f
    #define met(a, b) memset(a, b, sizeof(a))
    
    long long sum[N]={0, 1};
    
    void make()///打表求N以内的所有因子和;
    {
        for(int i=2; i<N; i++)
            sum[i]+=i+1; ///加上本身和1;
        for(int i=2; i*i<N; i++)
        {
            for(int j=i+1; i*j<N; j++)
                sum[i*j]+=i+j;///i和j一定是i*j的因子;
            sum[i*i]+=i;
        }
        for(int i=1; i<N; i++)
            sum[i]+=sum[i-1];
    }
    
    int main()
    {
        make();
    
        int T, l, r;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d %d", &l, &r);
            printf("%lld
    ", sum[r]-sum[l-1]);
        }
        return 0;
    }
    

      

  • 相关阅读:
    下载
    【项目】项目214
    【项目】项目220
    【项目】项目219
    【项目】项目216
    【项目】项目221
    【项目】项目212
    【项目】项目217
    【项目】项目213
    【项目】项目215
  • 原文地址:https://www.cnblogs.com/zhengguiping--9876/p/4997484.html
Copyright © 2020-2023  润新知