zzulioj 1783: 简单的求和 (筛选求和) 求和预处理 好题

来源:互联网 发布:js清空数组中所有元素 编辑:程序博客网 时间:2024/04/27 05:15

1783: 简单的求和

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 145  Solved: 25

SubmitStatusWeb Board

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
这个和hdoj上的“不可模数”那个题差不多,昨天写时竟然没想起来。。。
重点就是对求和的预处理。
#include<stdio.h>#include<string.h>#define ll long longll sum[1000010];ll zz(){int i,j;sum[1]=1;for(i=2;i<=500000;i++){for(j=i*2;j<1000010;j+=i){sum[j]+=i;}}for(i=2;i<1000010;i++)sum[i]=sum[i]+sum[i-1]+i+1;}int main(){int t,l,r;zz();scanf("%d",&t);while(t--){scanf("%d%d",&l,&r);printf("%lld\n",sum[r]-sum[l-1]);}return 0;} 

0 0
原创粉丝点击