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. redisUtil

    package com.cinc.ecmp.utils; import org.springframework.beans.factory.annotation.Autowired; import o ...

  2. Linux 内核

    在接口总线领域的最新的一项是外部总线的整个类. 这包括 USB, 固件, 和 IEEE1284(基 于并口的外部总线). 这些接口有些类似于老的非外部的技术, 例如 PCMCIA/CardBus 和 ...

  3. Crazy Binary String<Map法>

    #include<cstdio> #include<iostream> #include<map> using namespace std; map<int, ...

  4. 【矩阵乘法优化dp】[Codeforces 621E] Wet Shark and Blocks

    http://codeforces.com/problemset/problem/621/E E. Wet Shark and Blocks time limit per test 2 seconds ...

  5. 浮点数NaN和INF(#IND, #INF)

    NaN&INF定义在一些情况会出现无效的浮点数,例如除0,例如负数求平方根等,像这类情况,获取到的浮点数的值是无效的. NaN 即 Not a Number         非数字 INF  ...

  6. Linux基础:认识Linux

    1.Linux操作系统的特点 优点 ​ (1)可靠性高:linux是基于Unix的概念开发出来的系统,拥有Unix的稳定且效率的特点.运行一年以上而不曾宕机.不必关机是很平常的事情 : ​ (2)彻底 ...

  7. 最详细的自定义Spring Boot Starter开发教程

    1. 前言 随着Spring的日渐臃肿,为了简化配置.开箱即用.快速集成,Spring Boot 横空出世. 目前已经成为 Java 目前最火热的框架了.平常我们用Spring Boot开发web应用 ...

  8. 洛谷$P$2472 蜥蜴 $[SCOI2007]$ 网络流

    正解:网络流 解题报告: 传送门! $umm$一看就是个最大流呗,,,就直接考虑怎么建图趴$QwQ$ 首先看到这个高度减小其实就相当于对这个点的次数有约束,就显然拆点呗,流量为高度 然后$S$连向左侧 ...

  9. $Noip2010/Luogu1525$ 关押罪犯 贪心

    $Luogu$ $Sol$ 贪心.尽量把怨气值大的罪犯放到两个监狱,所以首先要按照怨气值从大到小排序.当扫描到两个罪犯已经被指定到同一个监狱时,就结束循环,这个怨气值就是答案.当然把怨气值大的两个罪犯 ...

  10. Java:Excel文件上传至后台

    之前的项目中有遇到上传Excel文件的需求,简单说就是解析一个固定格式的Excel表格,然后存到数据库对应的表中,表格如下: 项目采用SSM架构,mvc模式,显而易见,这个Excel表需要拆成两个表, ...