HDU 5942 Just a Math Problem(莫比乌斯)
来源:互联网 发布:小黄鸭淘宝客筛选软件 编辑:程序博客网 时间:2024/06/05 16:09
题目链接:http://acm.split.hdu.edu.cn/viewcode.php?rid=21108511
卡常啊。。。cal函数只能这么写啊。。。
代码:
#include<bits/stdc++.h>using namespace std;const int MAXN=1000000+5;const int MOD=1e9+7;typedef long long ll;bool check[MAXN+10]; int prime[MAXN+10]; int mu[MAXN+10]; void Moblus(){memset(check,false,sizeof(check));mu[1]=1;int tot=0;for(int i=2;i<=MAXN;i++){if(!check[i]){prime[tot++]=i;mu[i]=-1;}for(int j=0;j<tot;j++){if(i*prime[j]>MAXN) break;check[i*prime[j]]=true;if(i%prime[j]==0){mu[i*prime[j]]=0;break;}else{mu[i*prime[j]]=-mu[i];}}}}inline ll cal(ll n){ll ret=0;ll l,r;for(l=1;l*l<=n;l++) ret+=n/l;for(ll t=n/l;l<=n;l=r+1,t--)r=n/t,ret+=(r-l+1)*t%MOD;return ret%MOD;}inline ll solve(ll n){ll ret=0;for(int i=1;(ll)i*i<=n;i++){if(mu[i]){ret+=mu[i]==1?cal(n/i/i):MOD-cal(n/i/i);if(ret>=MOD)ret-=MOD;}}return (ret+MOD)%MOD;}int main(){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);Moblus();int T;scanf("%d",&T);for(int _=1;_<=T;_++){ll n;scanf("%lld",&n);printf("Case #%d: %lld\n",_,solve(n));}return 0;}
阅读全文
0 0
- HDU 5942 Just a Math Problem(莫比乌斯)
- HDU 5942 && 2016CCPC杭州 J: Just a Math Problem(莫比乌斯函数)
- HDU 5942 Just a Math Problem(数论+容斥原理)
- hdu5942 Just a Math Problem
- [HDU5942] Just a Math Problem
- A Math Problem HDU
- (HDU 1757)A Simple Math Problem
- hdu A Simple Math Problem
- A Simple Math Problem (HDU
- HDU 6182 A Math Problem
- A Simple Math Problem HDU
- A Simple Math Problem HDU
- HDU 6182A Math Problem
- Problem A hdu 1698 Just a Hook
- HDU 2650 A math problem (高斯整数环)
- HDU 2650 A math problem (高斯整数环)
- HDU 2650 A math problem 高斯整数判定
- hdu 1757 A Simple Math Problem(矩阵乘法)
- if-else重构与设计模式
- 设计模式-行为型软件设计模式(二)
- 北京大学可视化发展前沿研究生暑期学校Day5
- PCB layout学习路线
- AngularJS指令参数详解
- HDU 5942 Just a Math Problem(莫比乌斯)
- 循环链表的插入删除实现
- python爬虫入门-发送请求
- ZOJ1029-Moving Tables
- Python--Lambda
- 【树状数组-区间更新】hdu1556 Color the ball
- Hadoop 历史
- 《OpenCL异构并行计算:原理、机制与优化实践》笔记(二):进入OpenCL的世界(矢量加法)
- 希尔排序(+冒泡排序)