首页 > 其他 > 详细

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

时间:2015-11-26 14:44:42      阅读:303      评论:0      收藏:0      [点我收藏+]

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\n", sum[r]-sum[l-1]);
    }
    return 0;
}

  

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

原文:http://www.cnblogs.com/zhengguiping--9876/p/4997484.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!