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. dotnet core 集成到 Mattermost 聊天工具

    在找了很久的团队交流工具,发现了 Mattermost 最好用,但是还需要做一些定制化的功能,于是就找到了 Mattermost 插件开发,还找到了如何自己写服务集成到 Mattermost 里面 本 ...

  2. C#面试题整理2(不带答案)

    一.C# 理论 1.1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 1.2.简述abstract.sea ...

  3. boostrap-非常好用但是容易让人忽略的地方【6】:role属性

    普通样式,鼠标hover没有任何效果 <span>content</span> 加上role属性的样式,鼠标hover会有cursor:pointer的效果 <span ...

  4. 第三阶段:3.Web端产品设计:3.产品设计的层次

    一般淘宝购物的五个流程:浏览对应表现层,搜索对应框架层,产品页面对应架构层,确认对应范围层,付款对应战略层. 从具象到抽象.但是我们做产品都是从抽象到具象,而用户使用产品是从具象到抽象. 各个层次之间 ...

  5. requests + bs4 爬取豌豆荚所有应用的信息

    1.分析豌豆荚的接口的规律 - 获取所有app的接口url 2.往每一个接口发送请求,获取json数据 解析并提取想要的数据 app_data: 1.图标 app_img_url 2.名字 app_n ...

  6. C++版本的UnEscape 解析\uxxxx\uxxxx编码字符

    解析类似于这种Unicode编码格式的字符串 \u5b55\u5987\u88c5\u590f\u88c52018\u65b0\u6b3e\u5bbd\u677e\u77ed\u8896\u4e2d\ ...

  7. 【题解】NOIP2017 提高组 简要题解

    [题解]NOIP2017 提高组 简要题解 小凯的疑惑(数论) 不讲 时间复杂度 大力模拟 奶酪 并查集模板题 宝藏 最优解一定存在一种构造方法是按照深度一步步生成所有的联通性. 枚举一个根,随后设\ ...

  8. 洛谷$P5444\ [APIO2019]$奇怪装置 数论

    正解:数论 解题报告: 传送门$QwQ$ 我好像当初考的时候这题爆零了,,,部分分都没想到,,,我真的好菜$kk$ 考虑如果在$t_1,t_2$两个时刻有$x_1=x_2,y_1=y_2$是什么情况$ ...

  9. InterpreterPattern(解释器模式)-----Java/.Net

    解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文.这种模式被用在 SQL 解析.符号处 ...

  10. Linux gcc版本升级

    Linux gcc版本升级 操作环境 RHEL7,在进行内核编译时编译器版本,需要升级gcc编译器,选择gcc-8.3.0. http://ftp.gnu.org/gnu/gcc 里面提供所有的gcc ...