Description###

有一张n×m的数表,其第i行第j列(1 < =i < =n,1 < =j < =m)的数值为

能同时整除i和j的所有自然数之和。给定a,计算数表中不大于a的数之和。

Input###

输入包含多组数据。

输入的第一行一个整数Q表示测试点内的数据组数,接下来Q行,每行三个整数n,m,a(|a| < =10^9)描述一组数据。

Output###

对每组数据,输出一行一个整数,表示答案模2^31的值。

Sample Input###

2

4 4 3

10 10 5

Sample Output###

20

148

HINT###

1 < =N.m < =10^5 , 1 < =Q < =2×10^4


想法##

orz PoPoQQQ……

基本想法同“YY的GCD”

线性筛可筛出每个数i的约数和s[i]

之后离线处理,将a与s[]分别从小到大排序处理,莫比乌斯反演,树状数组维护前缀和。


代码##

注意:诡异的取模需要注意一下。

#include<cstdio>
#include<iostream>
#include<algorithm> #define P 1<<31 using namespace std; typedef long long ll;
const int N = 100005; int mu[N];
ll s[N],sm[N];
int p[N],prime[N],pnum;
void getmu(){
mu[1]=s[1]=1;
for(int i=2;i<N;i++) p[i]=1;
for(int i=2;i<N;i++){
if(p[i]){
prime[pnum++]=i;
mu[i]=-1;
s[i]=sm[i]=1+i;
}
for(int j=0;j<pnum && (ll)prime[j]*i<N;j++){
int id=prime[j]*i;
p[id]=0;
if(i%prime[j]==0){
mu[id]=0;
s[id]=s[i]/sm[i]*(sm[i]*prime[j]+1);
sm[id]=sm[i]*prime[j]+1;
break;
}
mu[id]=-mu[i];
s[id]=s[i]*(1+prime[j]);
sm[id]=1+prime[j];
}
}
}
int num[N];
bool cmp(int x,int y) { return s[x]<s[y]; } struct Bit{
ll c[N];
int lowbit(int x) { return x&(-x); }
void add(int x,ll y){
while(x<N){
(c[x]+=y)%=P;
x+=lowbit(x);
}
}
ll sum(int x){
ll ret=0;
while(x){
(ret+=c[x])%=P;
x-=lowbit(x);
}
return ret;
}
}f; struct data{
int n,m,a,id;
bool operator < (const data &b) const{
return a<b.a;
}
}d[N];
ll ans[N]; int main()
{
int T;
getmu();
for(int i=1;i<N;i++) num[i]=i;
sort(num+1,num+1+100000,cmp);
scanf("%d",&T);
for(int i=1;i<=T;i++){
scanf("%d%d%d",&d[i].n,&d[i].m,&d[i].a);
d[i].id=i;
}
sort(d+1,d+1+T); int t=1,n,m;
for(int i=1;i<=T;i++){
while(t<N && s[num[t]]<=d[i].a) {
for(int j=1;(ll)j*num[t]<N;j++)
f.add(j*num[t],s[num[t]]*mu[j]);
t++;
}
n=d[i].n; m=d[i].m;
for(int l=1,r;l<=min(n,m);l=r+1){
r=min(n/(n/l),m/(m/l));
ans[d[i].id]+=(f.sum(r)-f.sum(l-1))*(n/l)*(m/l);
}
}
for(int i=1;i<=T;i++)
printf("%lld\n",ans[i]&2147483647); return 0;
}

[bzoj3529] [洛谷P3312] [Sdoi2014] 数表的更多相关文章

  1. 洛谷 P3312 [SDOI2014]数表 解题报告

    P3312 [SDOI2014]数表 题目描述 有一张\(N*M\)的数表,其第\(i\)行第\(j\)列(\(1\le i \le n\),\(1 \le j \le m\))的数值为能同时整除\( ...

  2. 洛谷P3312 - [SDOI2014]数表

    Portal Solution 共\(T(T\leq2\times10^4)\)组测试数据.给出\(n,m(n,m\leq10^5),a(a\leq10^9)\),求\[ \sum_{i=1}^n\s ...

  3. 洛谷P3312 [SDOI2014]数表(莫比乌斯反演+树状数组)

    传送门 不考虑$a$的影响 设$f(i)$为$i$的约数和 $$ans=\sum\limits_{i=1}^n\sum\limits_{j=1}^nf(gcd(i,j))$$ $$=\sum\limi ...

  4. 洛谷 P3312 [SDOI2014]数表

    式子化出来是$\sum_{T=1}^m{\lfloor}\frac{n}{T}{\rfloor}{\lfloor}\frac{m}{T}{\rfloor}\sum_{k|T}\mu(\frac{T}{ ...

  5. 洛咕3312 [SDOI2014]数表

    洛咕3312 [SDOI2014]数表 终于独立写出一道题了...真tm开心(还是先写完题解在写的) 先无视a的限制,设\(f[i]\)表示i的约数之和 不妨设\(n<m\) \(Ans=\su ...

  6. 并不对劲的bzoj3529:loj2193:p3312:[SDOI2014]数表

    题目大意 定义函数\(f(x)=\sum_{k|x}k\) \(t\)(\(t\leq2*10^4\))组询问,每组给定\(n,m,a\)(\(n,m\leq10^5,a\leq10^9\)),求: ...

  7. P3312 [SDOI2014]数表

    啊啊啊我昨天怎么没写题解wwww 补昨日题解... 题目链接 : https://www.luogu.org/problemnew/show/P3312 也是莫反 我要把fft留到今天写 [和zyn小 ...

  8. 洛谷 P3313 [SDOI2014]旅行 解题报告

    P3313 [SDOI2014]旅行 题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教 ...

  9. luogu P3312 [SDOI2014]数表

    传送门 我们看要求的东西\[\sum_{i=1}^{n}\sum_{j=1}^{m}[\sigma(gcd(i,j))\le a]\sigma(gcd(i,j))\] 然而\(\le a\)比较烦,可 ...

随机推荐

  1. dll中全局变量在外部进行引用

    在Windows中实际导出全局变量,您必须使用类似于export / import语法的语法,例如: #ifdef COMPILING_THE_DLL #define MY_DLL_EXPORT ex ...

  2. PowerShell 使用 WMI 获取信息

    在 PowerShell 可以很容易使用 WMI 拿到系统的信息,如果有关注我的网站,就会发现我写了很多通过 WMI 拿到系统的显卡,系统安装的软件等方法,本文告诉大家如果通过 PowerShell ...

  3. JQ表单选择器和CSS3表单选择器

    JQ表单选择器和CSS3表单选择器 JQ表单选择器 为了使用户能够更加灵活地操作表单,jQuery中加入了表单选择器,利用这个选择器能极其方便的获取到表单的某个或者某类型的元素.表单选择器的介绍如图: ...

  4. JS闭包机制实现为DOM元素循环添加事件

    HTML代码: <button type='button' class='btn' id='1'>按钮1</button> <button type='button' c ...

  5. oracle解除被锁定的表的状态

      select b.owner,b.object_name,a.session_id,a.locked_mode,c.serial#,c.sid||','||c.serial# from v$loc ...

  6. Team Foundation Server 2015使用教程【2】:默认团队成员添加

    官方文档:https://www.visualstudio.com/en-us/docs/setup-admin/add-users

  7. Flask框架知识点整合

    Flask 0.Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收ht ...

  8. TCP/IP||IP选路

    1.选路原理 在IP搜索路由表分为几个步骤 1.搜索匹配的主机地址 2.搜索匹配的网络地址 3.搜索默认表项. IP层进行选路实际是一种选路机制,搜索路由表并决定向哪个网络接口发送分组,区别选路策略, ...

  9. .NET BS端和CS端相互压缩发送接收byte对象数据方法

    本文是总结实际项目经验,代码不少是学习别人整合的,效果稳定可靠,有很大参考价值:但是也有不全面的地方,朋友们拿到可以按照自己需要修改. 场景是项目需要在客户端控制台软件和.NET MVC站点间互相传递 ...

  10. java 实现敏感词(sensitive word)工具详解使用说明

    sensitive-word 平时工作中,只要涉及到用户可以自由发言(博客.文档.论坛),就要考虑内容的敏感性处理. sensitive-word 基于 DFA 算法实现的高性能敏感词工具.工具使用 ...