BZOJ 2226: [Spoj 5971] LCMSum 莫比乌斯反演 + 严重卡常
Code:
#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 1000006
#define M 1000004
#define ll long long
using namespace std;
char *p1,*p2,buf[100000];
#define nc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int rd() {int x=0; char c=nc(); while(c<48) c=nc(); while(c>47) x=(((x<<2)+x)<<1)+(c^48),c=nc(); return x;}
char pbuf[100000],*pp=pbuf;
int cnt,edges;
bool vis[maxn];
int mu[maxn],prime[maxn],hd[maxn],to[maxn*15],nex[maxn*15];
ll sumv[maxn];
int main()
{
// setIO("input");
int i,j;
mu[1]=1;
for(i=1;i<=M;++i)
for(j=i;j<=M;j+=i)
{
nex[++edges]=hd[j], hd[j]=edges,to[edges]=i;
}
sumv[1] = 1;
for(i=2;i<=M;i++)
{
if(!vis[i]) prime[++cnt]=i,sumv[i] = 1-i;
for(j=1;j<=cnt && i*prime[j] <= M;j ++ )
{
vis[i*prime[j]]=true;
if(i%prime[j]==0) {sumv[i*prime[j]]=sumv[i]; break;}
else sumv[i*prime[j]] = sumv[i] * sumv[prime[j]];
}
}
int T=rd(),n;
ll re=0;
while(T--)
{
n=rd();
re=0;
for(i=hd[n];i;i=nex[i]) re+=sumv[to[i]]*(n/to[i])*(n/to[i]+1)/2;
re*=n;
printf("%lld\n",re);
}
return 0;
}
BZOJ 2226: [Spoj 5971] LCMSum 莫比乌斯反演 + 严重卡常的更多相关文章
- BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论
BZOJ 2226 [Spoj 5971] LCMSum 这道题和上一道题十分类似. \[\begin{align*} \sum_{i = 1}^{n}\operatorname{LCM}(i, n) ...
- bzoj 2226: [Spoj 5971] LCMSum 数论
2226: [Spoj 5971] LCMSum Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 578 Solved: 259[Submit][St ...
- 【BZOJ2226】[Spoj 5971] LCMSum 莫比乌斯反演(欧拉函数?)
[BZOJ2226][Spoj 5971] LCMSum Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n ...
- BZOJ 2226 [Spoj 5971] LCMSum | 数论拆式子
题目: http://www.lydsy.com/JudgeOnline/problem.php?id=2226 题解: 题目要求的是Σn*i/gcd(i,n) i∈[1,n] 把n提出来变成Σi/g ...
- BZOJ 2226 [Spoj 5971] LCMSum
题解:枚举gcd,算每个gcd对答案的贡献,贡献用到欧拉函数的一个结论 最后用nlogn预处理一下,O(1)出答案 把long long 打成int 竟然没看出来QWQ #include<ios ...
- BZOJ2226: [Spoj 5971] LCMSum
题解: 考虑枚举gcd,然后问题转化为求<=n且与n互质的数的和. 这是有公式的f[i]=phi[i]*i/2 然后卡一卡时就可以过了. 代码: #include<cstdio> # ...
- [BZOJ2226][SPOJ5971]LCMSum(莫比乌斯反演)
2226: [Spoj 5971] LCMSum Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 1949 Solved: 852[Submit][S ...
- [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块)
[BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块) 题面 给定N, M,求\(1\leq x\leq N, 1\leq y\leq M\)且gcd(x, y)为质数的(x, y)有多少对. ...
- Bzoj 2301: [HAOI2011]Problem b(莫比乌斯反演+除法分块)
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MB Description 对于给出的n个询问,每次求有多少个数对(x, ...
随机推荐
- 快速入门分布式消息队列之 RabbitMQ(1)
目录 目录 前言 简介 安装 RabbitMQ 基本对象概念 Message 消息 Producer 生产者 Consumer 消费者 Queue 队列 Exchange 交换机 Binding 绑定 ...
- Delphi XE2 之 FireMonkey 入门(18) - TLang(多语言切换的实现)
一个小小的 TLang 类, 实现多语言切换, 挺好的. 它的工作思路是: 1.首先通过 AddLang('语言代码') 添加语言类别, 如: AddLang('en').AddLang('cn'). ...
- template标签就相当于React中的fragment
template标签就相当于React中的fragment
- 多线程threading初识,线程等待
1.线程是程序里面最小的执行单元. 2.进程是资源的集合. 线程是包含在进程里面的,一个进程可以有多个线程,但只要要有一个线程. 一.多线程,就是N个线程一起干活: 1.传统方式,串行,循环5次需要1 ...
- Linux - 创建交换分区 swap
购买的 1GB 内存的 Linux 小机器,在编译安装 PHP 的时候内存捉急,只好开启 swap 交换分区来增大内存. [root@VM_139_38_centos php-7.2.12]# cat ...
- c# WPF——创建带有图标的TreeView
1.使用数据模板对TreeViewItem进行更改 2.xaml中重写TreeviewItem的控件模板 3.继承TreeViewItem(TreeView中的元素),后台进行控件重写.(介绍此方法) ...
- How are you to imagine anything if the images are always provided for you?
perdestrian: n. 行人 compliment: n. 赞扬 simply: adv. 只是,仅仅 shorten: vt. 缩短 accustom: vt. 习惯 collide: v. ...
- Vue路由注意事项
一.vue中路由的使用 1.定义组件 <template> <div class="hello"> <h1 @click="info&quo ...
- Idea maven远程调试(pom配置tomcat)
服务器端,maven内置tomcat启动命令:mvnDebug clean tomcat7:run -Dmaven.test.skip=true 服务器端:配置(vim或者文件模式打开mvnDebug ...
- Dev Express之ImageComboBoxEdit,RepositoryItemImageComboBox使用方式
Dev Express之ImageComboBoxEdit,RepositoryItemImageComboBox使用方式 1.使用ImageComboBoxEdit实现下拉框键值数据函数 publ ...