bzoj1101(莫比乌斯反演)
来源:互联网 发布:淘宝客推广加权重吗 编辑:程序博客网 时间:2024/05/18 01:47
比上题简单多了,关键还是数据小管用。。
不过这道题,卡时卡的太紧了
#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;const int N=50005;ll n,m,d;int u[N+10],p[N+10],sum[N+10];bool b[N+10];void init(){sum[1]=u[1]=1;for (int i=2;i<=N;i++){if (!b[i]){p[++p[0]]=i;u[i]=-1;}for (int j=1;j<=p[0]&&p[j]*i<=N;j++){b[i*p[j]]=true;if (i%p[j]==0){u[i*p[j]]=0;break;}else u[p[j]*i]=-u[i];}sum[i]=sum[i-1]+u[i];}}ll work(ll n,ll m){if (n>m) swap(n,m);ll ans=0;for (int l=1,r;l<=n;l=r+1){r=min(n/(n/l),m/(m/l));ans+=(sum[r]-sum[l-1])*(n/l)*(m/l);}return ans;}inline ll read(){ll ans,f=1;char ch;while ((ch=getchar())<'0'||ch>'9') if (ch=='-') f=-1;ans=ch-'0';while ((ch=getchar())>='0'&&ch<='9') ans=ans*10+ch-'0';return ans*f;}int main(){ll T;init();T=read();while (T--){n=read();m=read();d=read();printf("%lld\n",work(n/d,m/d));}return 0;}
总结:
首先对一些常数需要进行潜在的关注
1:能用int,就不要用long long,测试的时候发现long long 比int慢一倍,有的时候就可能TLE
2:读入优化保平安。不过读入优化只快了200ms,而int比long long快了6000ms。。。。。。。。。。。。。
0 0
- bzoj1101(莫比乌斯反演)
- [BZOJ1101][POI2007]Zap(莫比乌斯反演)
- bzoj1101: [POI2007]Zap 莫比乌斯反演
- BZOJ1101: [POI2007]Zap 莫比乌斯反演
- 【bzoj1101】[POI2007]Zap 莫比乌斯反演
- 莫比乌斯反演 bzoj1101【Poi2007】Zap
- bzoj1101 [POI2007]Zap 莫比乌斯反演
- [莫比乌斯反演] BZOJ1101: [POI2007]Zap
- bzoj1101 [POI2007]ZAP-Queries(莫比乌斯反演)
- 【莫比乌斯反演】BZOJ1101 [POI2007]Zap
- bzoj1101[POI2007]Zap-莫比乌斯反演
- BZOJ1101 [POI2007]Zap 【莫比乌斯反演】
- BZOJ1101【莫比乌斯函数】
- 二项式反演,莫比乌斯反演。
- 莫比乌斯反演(入门)
- bzoj2820(莫比乌斯反演)
- bzoj3930(莫比乌斯反演)
- hdu6134-(莫比乌斯反演)
- java awt布局管理
- DatePicker示例
- Oracle必读好书推荐 -------------------------------------------------------------------------- tkyte的书 1、Ex
- 做程序员你真的准备好了吗?
- 机器学习-逻辑回归-代价函数
- bzoj1101(莫比乌斯反演)
- MySQL 5.6安装
- Message from debugger: Terminated due to signal 15
- 笔记本添加固态硬盘记
- Reverse Linked List II
- 我突然之间找到了自我
- 欢迎使用CSDN-markdown编辑器
- Day20、冒泡、快速、选择、插入、二分查找
- 【最近相关】:2016-8-24