51nod1441 士兵的数字游戏
2017-08-25 16:17
246 查看
对于一个数,可以玩的轮数就是它质因子的个数。先预处理出来5e6以内所有数的质因子数,因为给出的是a!/b!的形式,两个数乘除就相当于质因子数的加减,所以可以求一下前缀和。
#include<stdio.h> using namespace std; struct p{ int k, tot; } a[5000100]; int f[5000100]; int s[5000100]; int main(){ for(int i = 2; i <= 5000000; i++) a[i].k = i; for(int i = 2; i <= 5000000; i++){ if(f[i] == 0){ a[i].tot = 1; for(int j = 2 * i; j <= 5000000; j += i){ f[j] = 1; while(a[j].k % i == 0 && a[j].k != 0){ a[j].k /= i; a[j].tot++; } } } } for(int i = 1; i <= 5000000; i++){ s[i] = s[i - 1] + a[i].tot; } int t; scanf("%d", &t); for(int i = 1; i <= t; i++){ int a, b; scanf("%d%d", &a, &b); printf("%d\n", s[a] - s[b]); } return 0; }
相关文章推荐
- 51nod1441 士兵的数字游戏 分解质因子
- 质数筛 51Nod1441 士兵的数字游戏
- 1441 士兵的数字游戏
- 1441 士兵的数字游戏
- 士兵的数字游戏
- 51nod 1441 士兵的数字游戏 (模拟线性筛)
- 1441 士兵的数字游戏 51nod
- 51nod 1441 士兵的数字游戏
- 51Nod-1441-士兵的数字游戏
- 51nod 1441 士兵的数字游戏 (素数筛变形)
- 51nod 1441 士兵的数字游戏【素数筛】
- 1441 士兵的数字游戏
- 51nod-1441 士兵的数字游戏
- 51nod 1441:士兵的数字游戏
- 51nod 1441:士兵的数字游戏
- [51nod-1441]士兵的数字游戏 题解
- FZU2089-数字游戏
- flash与游戏笔记:滚动数字(2)
- Java 小例子:猜数字游戏
- 数字游戏