[数论]jb数2
来源:互联网 发布:英语单词书写软件 编辑:程序博客网 时间:2024/05/22 17:15
题目大意:
定义jb数为:一个数分解质因数后,所有质因子的和。
例如jb(4)=4,jb(5)=5,jb(6)=5等。
现给出一个范围,求出这个范围内jb数的和。
由于这个数可能过大,只需要求出这个数模1919的值就可以了。
solution:
已知一个数a和质数b,如果a % b=0,那么Jb[a]=b+Jb[a / b]
可以类似筛法的求出每个数是由哪个质数的到的,再次循环即可求出Jb[x]
维护前缀和,输出答案。
输入输出都好大,输入输出挂都加上了 = =
#include<iostream>#include<cstdio>#include<cctype>#include<cstring>using namespace std;const int M=1000010;long long s[2*M],g[2*M],d[2*M];inline int Init(){ char c=getchar(); while(!isdigit(c))c=getchar(); int x=0; while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); } return x;}int buf[10];inline void Out(int i){ int p=0; if(i==0)buf[p++]=0; else while(i) { buf[p++]=i%10; i/=10; } for(int j=p-1;j>=0;--j)putchar('0'+buf[j]);}int main(){ int T=Init(); for(int i=2;i<=M;++i)g[i]=i; for(int i=2;i<=1001;++i) if(g[i]==i)for(int j=2;j<=M/i+1;++j)g[i*j]=i; for(int i=2;i<=M;++i) { if(g[i]==i)d[i]=i; else d[i]=d[i/g[i]]+g[i]; s[i]=s[i-1]+d[i]; } ios::sync_with_stdio(false); while(T--) { int l=Init(),r=Init(); Out((s[r]-s[l-1])%1919); putchar('\n'); } return 0;}
- [数论]jb数2
- 【数论】MMT数
- 丑数(数论)
- 【卡特兰数】【数论】
- 完全平方数(数论)
- 【数论】计算组合数
- 数论--卡特兰数
- hdu 1717 小数化分数2 (数论)
- XJOI NOIP模拟题2[数论][组合数][树规]
- [android JB audioflinger] fastmixer 2 --FastMixerState & FastMixerStateQueue
- JB 4.2.2 过扫描 overscan
- 【数论 / 数值】【RQNOJ】波浪数
- 【数论】法 雷 数 列
- 【数论】MMT数解题报告
- 数论:k尾相等数
- HDU 1406 完数 (数论)
- HDU1999 不可摸数 【数论】
- 算法-数论-卡特兰数
- 图片动画横条广告带上下滚动
- The type JPEGImageEncoder is not accessible due to restriction on required library
- Wireshark分析TCP连接断开过程分析与总结
- OpenGL超级宝典笔记6
- 开发收获(5)IE兼容模式及客户端兼容模式、服务器端兼容模式设置
- [数论]jb数2
- Auto-Tier 异步复制
- 冒泡—java
- 第三方苹果开发库之ASIHTTPRequest(翻译版)
- 【OSGi】OSGi类加载流程
- 第七周
- VMware ubuntu虚拟机的安装过程记录
- BIOS、BootLoader、uboot对比
- Sublime Text 2 使用心得