CF#235E. Number Challenge
可以理解为上一道题的扩展板..
然后我们就可以YY出这样一个式子
${\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^cd(ijk)=\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^c[gcd(i,j)=gcd(i,k)=gcd(j,k)=1]\lfloor\frac{a}{i}\rfloor\lfloor\frac{b}{j}\rfloor\lfloor\frac{c}{k}\rfloor}$
然后我们枚举第一维,排除掉不和第一维互质的数大力反演就OK啦。
这里介绍另一种很神奇(麻烦)方法,当然这个和反演的关系就没那么大了:
首先设$f(k)=\sum\limits_{i=1}^{a}\sum\limits_{j=1}^{b}[k=i \times j]$
然后得到$ans=\sum\limits_{i=1}^{a\times b} f(i)\sum\limits_{j=1}{d(i \times j)}$
$ans=\sum\limits_{i=1}^{a\times b} f(i)\sum\limits_{j=1}^{c}{d(i \times j)}$
$ans=\sum_{i=1}^{ab}f(i)\sum_{j=1}^c\sum_{u|i}\sum_{v|j}[gcd(u,v)=1]$
$ans=\sum\limits_{i=1}^{a\times b}\sum\limits_{j=1}^{c}[gcd(i,j)=1]\sum\limits_{u=1}^{\frac{a\times b}{i}}f(u\times i)\lfloor \frac{c}{j}\rfloor$
不妨设$S(i)=\sum\limits_{u=1}^{\frac{a\times b}{i}}f(u\times i)$
得到:
$ans=\sum\limits_{i=1}^{a\times b}\sum\limits_{j=1}^{c}[gcd(i,j)=1]S(i)\lfloor \frac{c}{j}\rfloor$
$ans=\sum\limits_{i=1}^{a\times b}\sum\limits_{j=1}^{c}\sum\limits_{d|gcd(i,j)}\mu(d)S(i)\lfloor \frac{c}{j}\rfloor$
不妨设$Q(k)=\sum\limits_{i=1}^{k}\lfloor \frac{k}{i} \rfloor$
得到:
$ans=\sum\limits_{i=1}^{c}\mu(i)\sum\limits_{j=1}^{\frac{a\times b}{i}}S(i\times j)\sum\limits_{k=1}^{\frac{c}{i}}Q(k)$
不妨设$P(k)=\sum\limits_{i=1}^{\frac{a\times b}{k}}S(i\times k)$
最后得到$ans=\sum\limits_{i=1}^{c}\mu(i)P(i)Q(i)$
大力预处理即可。
//CF235E
//by Cydiater
//2017.2.22
#include <iostream>
#include <queue>
#include <map>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <iomanip>
#include <algorithm>
#include <bitset>
#include <set>
#include <vector>
#include <complex>
using namespace std;
#define ll int
#define up(i,j,n) for(ll i=j;i<=n;i++)
#define down(i,j,n) for(ll i=j;i>=n;i--)
#define cmax(a,b) a=max(a,b)
#define cmin(a,b) a=min(a,b)
const ll MAXN=4e6+5;
const ll mod=1073741824;
inline ll read(){
char ch=getchar();ll x=0,f=1;
while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
ll A,B,C,AB,prime[MAXN],P[MAXN],S[MAXN],f[MAXN],Q[MAXN],miu[MAXN],cnt;
bool vis[MAXN];
namespace solution{
void Prepare(){
A=read();B=read();C=read();AB=A*B;
miu[1]=1;
up(i,2,C){
if(!vis[i]){prime[++cnt]=i;miu[i]=-1;}
up(j,1,cnt){
if(i*prime[j]>C)break;
vis[i*prime[j]]=1;
if(i%prime[j])miu[i*prime[j]]=-miu[i];
else break;
}
}
up(i,1,A)up(j,1,B)f[i*j]++;
up(i,1,AB)for(ll j=i;j<=AB;j+=i)
(S[i]+=f[j])%=mod;
up(i,1,AB)for(ll j=i;j<=AB;j+=i)
(P[i]+=S[j])%=mod;
ll pos;
up(i,1,C){
for(ll j=1;j<=i;j=pos+1){
pos=i/(i/j);
Q[i]+=(pos-j+1)*(i/j);
(Q[i]+=mod)%=mod;
}
}
}
void Solve(){
ll ans=0;
up(i,1,C){
(ans+=miu[i]*P[i]*Q[C/i])%=mod;
(ans+=mod)%=mod;
}
cout<<ans<<endl;
}
}
int main(){
//freopen("input.in","r",stdin);
using namespace solution;
Prepare();
Solve();
//cout<<"Time has passed:"<<1.0*clock()/1000<<"s!"<<endl;
return 0;
}
CF#235E. Number Challenge的更多相关文章
- Codeforces 235E. Number Challenge DP
dp(a,b,c,p) = sigma ( dp(a/p^i,b/p^j,c/p^k) * ( 1+i+j+k) ) 表示用小于等于p的素数去分解的结果有多少个 E. Number Challenge ...
- Codeforces 235E Number Challenge
http://codeforces.com/contest/235/problem/E 远距离orz......rng_58 证明可以见这里(可能要FQ才能看到) 还是copy一下证明吧: 记 $$f ...
- CodeForces 235E Number Challenge (莫比乌斯反演)
题意:求,其中d(x) 表示 x 的约数个数. 析:其实是一个公式题,要知道一个结论 知道这个结论就好办了. 然后就可以解决这个问题了,优化就是记忆化gcd. 代码如下: #pragma commen ...
- 『NYIST』第八届河南省ACM竞赛训练赛[正式赛一]CF-236B. Easy Number Challenge
B. Easy Number Challenge time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- Easy Number Challenge(暴力,求因子个数)
Easy Number Challenge Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I ...
- Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
试题 算法训练 Number Challenge 资源限制 时间限制:3.0s 内存限制:512.0MB 问题描述 定义d(n)为n的约数个数.现在,你有三个数a,b,c.你的任务是计算下面式子mod ...
- 【codeforces 235E】 Number Challenge
http://codeforces.com/problemset/problem/235/E (题目链接) 题意 给出${a,b,c}$,求${\sum_{i=1}^a\sum_{j=1}^b\sum ...
- 洛谷 P3327 [SDOI2015]约数个数和 || Number Challenge Codeforces - 235E
https://www.luogu.org/problemnew/show/P3327 不会做. 去搜题解...为什么题解都用了一个奇怪的公式?太奇怪了啊... 公式是这样的: $d(xy)=\sum ...
- CF Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)
1. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort 暴力枚举,水 1.题意:n*m的数组, ...
随机推荐
- 注意:darknet安装
参考:https://github.com/AlexeyAB/darknet # 一.安装 ## linux下安装 - 在darknet目录下执行make ## windows下安装 1. 安装vs2 ...
- SQL语句中的正则表达式
正则表达式 REGEXP_LIKE执行正则表达式匹配 SELECT FIRST_NAME FROM EMPLOYEES WHERE REGEXP_LIKE(FIRST_NAME,'^al(an|yss ...
- MongoDB的”存储过程“
使用 db.system.js.insert({_id:"aaa", value:"zzq"}); 这条命令向全局系统的js中添加了一个_id为"aa ...
- wxWidgets与其他工具库的比较(上)
本文是在wxWidgets Wiki上面找到的一篇,对比了wxWidgets和其他一些界面工具的特点.看到很多朋友在网上询问这些库各自的特点,我想先把这篇文章翻译出来——毕竟这也算是一篇官方的文章,应 ...
- 【JMeter】1.9上考试jmeter测试调试
1.打开抓包工具开始抓包,抓取录制脚本的整个过程.以方便后续确认关联参数的左右关联,搜索相关代码. 1.用badboy录制测试脚本并存为jmeter格式. 2.用jmeter打开已经保存的脚本 1.用 ...
- mysql 表基本增删查改
对表的操作是在某个数据库下才能进行的,所以要先选择数据库 "use 数据库名;" 1.创建数据表 1)"create table 表名 (字段1 类型 [约束], ...
- 前端 HTML标签介绍
那什么是HTML标签呢? 1. 在HTML中规定标签使用英文的的尖括号即"<"和">"包起来,如`<html>`.`<p>` ...
- WordPress跳过语言包加载提高效率
WordPress 加载语言包是需要花费 0.1-0.5 秒不等的时间,所以如果 WordPress 前台可以不加载语言包,而主题中的一些文本直接写成中文,就可以加快网站的速度,并且又能保证后台的中文 ...
- spring boot配置service发布服务
在application.yml中配置 server: port: 8080 context-path: /crm spring: datasource: driver-class-name: com ...
- 图文解析Spark2.0核心技术(转载)
导语 Spark2.0于2016-07-27正式发布,伴随着更简单.更快速.更智慧的新特性,spark 已经逐步替代 hadoop 在大数据中的地位,成为大数据处理的主流标准.本文主要以代码和绘图的方 ...