多校连萌 简单的求和
2015-11-22 15:40
246 查看
http://acm.zzuli.edu.cn/problem.php?id=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> #include <limits> #include <queue> #include <stack> #include <vector> #include <map> using namespace std; typedef long long LL; #define N 1010000 #define INF 0x3f3f3f3f #define PI acos (-1.0) #define EPS 1e-8 #define met(a, b) memset (a, b, sizeof (a)) LL sum ; void Init () { sum[1] = 1; 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; j*i<=N; j++) sum[i*j] += i+j;//i和j一定是i*j的两个因子 sum[i*i] += i;//i*i是完全平方数 } for (int i=1; i<=N; i++) sum[i] += sum[i-1]; } int main () { int t, l, r; Init (); scanf ("%d", &t); while (t--) { scanf ("%d %d", &l, &r); printf ("%lld\n", sum[r]-sum[l-1]); } return 0; }
相关文章推荐
- 最简单的抓包程序
- Oracle 序列(二)
- Oracle 表及表空间(一)
- 知原理(2)
- Java中的String为什么是不可变的?
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- 信息安全系统设计基础实验二
- MyBatis 初始配置
- ThinkPHP学习-2
- 浅谈JavaScript中的伪类 (李睿豪)
- Android Service生命周期及用法!
- C++ 学习(虚基类)
- Swift笔记
- 杭电2722&&poj3653&&zoj2935
- 数学笔记(二)之平面表示
- EM算法推导
- uint8_t , uint16_t,uint32_t,uint64_t
- 对nova进行api扩展
- 自定义Operation
- 设置App的启动页