http://www.lydsy.com/JudgeOnline/problem.php?id=3529

思路:令F(i)为i的约数和,

1<=x<=n,1<=y<=m

G(i)为i|gcd(x,y)的个数

g(i)为i=gcd(x,y)的个数

G(i)=floor(n/i)*floor(m/i)

g(i)=Σu(d/i)*G(d) (i|d)

F(i)可以用线性筛O(n)处理

ans=(1<=i<=min(n,m)) Σg(i)*F(i)=Σ F(i)*ΣG(d)*u(d/i) (i|d)

=(1<=d<=min(n,m)) ΣG(d)* Σ(i|d) u(d/i)*F(i)

 #include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#define ll long long
#define inf 0x7fffffff
std::pair<int,int>f[];
struct node{
int n,m,id,a;
}q[];
int mx,v[],p[],mark[],mul[],ans[];
int lowbit(int x){
return x&(-x);
}
int read(){
char ch=getchar();int t=,f=;
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (''<=ch&&ch<=''){t=t*+ch-'';ch=getchar();}
return t*f;
}
int Read(){
char ch=getchar();ll t=,f=;
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (''<=ch&&ch<=''){t=t*+ch-'';ch=getchar();}
return t*f;
}
bool cmp(node a,node b){
return a.a<b.a;
}
void add(int x,int y){
for (int i=x;i<=mx;i+=lowbit(i)){
v[i]+=y;
}
}
int query(int x){
int res=;
if (x==) return ;
for (int i=x;i;i-=lowbit(i)){
res+=v[i];
}
return res;
}
void init(){
mul[]=;
for (int i=;i<=mx;i++){
if (!mark[i]) {
p[++p[]]=i;
mul[i]=-;
}
for (int j=;j<=p[]&&i*p[j]<=mx;j++){
mark[i*p[j]]=;
if (i%p[j]) mul[i*p[j]]=mul[i]*(-);
else {
mul[i*p[j]]=;
break;
}
}
}
for (int i=;i<=mx;i++)
for (int j=i;j<=mx;j+=i)
f[j].first+=i;
for (int i=;i<=mx;i++) f[i].second=i;
}
void solve(int k){
int id=q[k].id,n=q[k].n,m=q[k].m;
for (int i=,j;i<=q[k].n;i=j+){
j=std::min(n/(n/i),m/(m/i));
ans[id]+=(n/i)*(m/i)*(query(j)-query(i-));
}
}
int main(){
int Q=read();
for (int i=;i<=Q;i++){
q[i].n=read(),q[i].m=read(),q[i].a=read();q[i].id=i;
if (q[i].n>q[i].m) std::swap(q[i].n,q[i].m);
mx=std::max(mx,q[i].n);
}
init();
std::sort(q+,q++Q,cmp);
std::sort(f+,f++mx);
int now=;
for (int i=;i<=Q;i++){
while (now+<=mx&&f[now+].first<=q[i].a){
now++;
for (int j=f[now].second;j<=mx;j+=f[now].second){
add(j,f[now].first*mul[j/f[now].second]);
}
}
solve(i);
}
for (int i=;i<=Q;i++)
printf("%d\n",ans[i]&inf);
}

最新文章

  1. 《深入理解Java虚拟机》学习笔记1-内存数据区域
  2. FFmpeg纯净版解码 av_parser_parse2
  3. oracle 11g install linux
  4. jQuery1.9及其以上版本中动态元素on绑定事件无效解决方案
  5. 单据状态BE构建
  6. (转)Ratchet教程:Buttons组件
  7. nyoj 97 兄弟郊游问题
  8. python对拍程序
  9. INFORMATION_SCHEMA.COLUMNS 查询表字段语句
  10. Dockerfile注意事项
  11. Dive in python Chapter3 实例
  12. flume中sink到hdfs,文件系统频繁产生文件,文件滚动配置不起作用?
  13. Javascript高级编程学习笔记(14)—— 引用类型(3)Date类型
  14. Netty源码分析(二):服务端启动
  15. laravel 更新验证
  16. spring boot 项目无法访问静态页面
  17. git学习入门
  18. 20155312 2016-2017-2 《Java程序设计》第十周学习总结
  19. OpenGL中的光照技术(翻译)
  20. nginx 开启GZIP、域名指向index.html

热门文章

  1. Android处理XML的三种方式
  2. LeetCode_Word Search
  3. tp28xx port pin (open-drain )and (push-pull) 和open collector)
  4. MySQL加锁分析
  5. SQL 如何表示引号
  6. OpenstackHigh-level-service
  7. ubuntu 14.04 下试用Sublime Text 3
  8. as3 updateAfterEvent的作用
  9. 《Swift开发指南》国内第一本Swift图书上市了
  10. html5lib-python doc