bzoj2820&&YY的GCD
来源:互联网 发布:ubuntu提示权限不够 编辑:程序博客网 时间:2024/06/12 01:07
马丹,又是一道权限题。
问我怎么搞到题面:
vjudge:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37167
Description
Input
Output
Sample Input
210 10100 100
Sample Output
302791
Hint
T = 10000
N, M <= 10000000
Source
FAQ | About Virtual Judge | Forum | Discuss | Open Source Project
All Copyright Reserved ©2010-2014 HUST ACM/ICPC TEAM
Anything about the OJ, please ask in the forum, or contact author:Isun, but NEVER contact freefcw@gmail.com, who is irrelevant to this site !!
Server Time:
参照bzoj 中problem B.
然后我们枚举每个质数分块。(嘿嘿嘿,你以为就过了?TLE)
min(a',b')
我们处理那道题的时候,ans= ∑ u(d) *[a'/d]*[b'/d]
d=1
min([n/p],[m/p])
这里,ans=∑ ∑ u(d) * [n/pd] *[m/pd]
p d=1
然后:
min(N,M)
ans=∑ ∑ u(T/p) *[N/T]*[M/T]
T=1 p|T
min(N,M)
ans=∑ [N/T][M/T] ∑ u(T/p)
T=1 p|T
f(T)=∑ u(T/p)
p|T
然后我们可以预处理出来f(T)及其前缀和。
然后分块:
(由于是权限题,没法交,就在网上找了AC代码,对拍跑错,没跑出错; 测试时间,和网上代码差不多快。 求路过的有权限的大神帮忙交一下,谢谢~~)
#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>#include<queue>#include<cmath>using namespace std;const int maxn=10000000+20;/* min(N/p,M/p)ans=∑ ∑ u(d)*[N/pd]*[M/pd] p d=1 min(N,M)ans=∑ ∑ u(T/p) *[N/T]*[M/T] T=1 p|T min(N,M)ans=∑ [N/T][M/T] ∑ u(T/p) T=1 p|T f(T)=∑ u(T/p) p|T */bool flag[maxn];int prime[maxn];int u[maxn];int f[maxn];int tot;void init(){memset(flag,0,sizeof(flag));tot=0;u[1]=1;for(int i=2;i<=10000000;i++){if(!flag[i]){prime[++tot]=i;u[i]=-1;}for(int j=1;j<=tot&&i*prime[j]<=10000000;j++){flag[i*prime[j]]=1;if(i%prime[j]==0){u[i*prime[j]]=0;break;}else u[i*prime[j]]=-u[i];}}for(int i=1;i<=tot;i++){for(int j=1;prime[i]*j<=10000000;j++){f[j*prime[i]]+=u[j];}}f[0]=0;for(int i=1;i<=10000000;i++)f[i]+=f[i-1];}int n,m;int main(){init();int T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);int M=min(n,m);int pos;int ans=0;for(int i=1;i<=M;i=pos+1){pos=min(n/(n/i),m/(m/i));ans+=(f[pos]-f[i-1])*(n/i)*(m/i);}printf("%d\n",ans);}return 0;}
- [bzoj2820] yy的gcd
- bzoj2820: YY的GCD
- bzoj2820: YY的GCD
- [BZOJ2820]YY的GCD
- BZOJ2820: YY的GCD
- bzoj2820&&YY的GCD
- bzoj2820 YY的GCD
- YY的GCD[bzoj2820]
- bzoj2820 YY的GCD
- BZOJ2820: YY的GCD
- BZOJ2820 YY的GCD
- bzoj2820&&COGS2165 YY的GCD
- BZOJ2820: YY的GCD(Mobius反演)
- bzoj2820: YY的GCD 莫比乌斯反演
- 【莫比乌斯反演】[BZOJ2820]YY的GCD
- 【bzoj2820】YY的GCD 莫比乌斯反演
- 【bzoj2820】【YY的gcd】【莫比乌斯反演】
- Bzoj2820:YY的GCD:莫比乌斯反演
- swift 之?和!
- ios计算器
- SQLite清空表数据并将自增ID设为0
- LINUX多线程
- linux配置redis和phpredis扩展
- bzoj2820&&YY的GCD
- caffe代码阅读8: Data_layers的实现细节(各个数据读取层的实现细节) 2016.3.25-28
- SpringMVC中ModelAndView, Model, ModelMap, Map, String, void的相关内容
- 【swift_3】swift之UITableView和UINavigation视图控制器
- ionic 2 添加第三方的js
- ElasticSearch java API 按照某个字段排序
- Data Binding-初学篇-(1)
- 今日BBC
- linux vi 退出和chow用法