bzoj4804: 欧拉心算 欧拉筛
题意:求\(\sum_{i=1}^n\sum_{j=1}^n\phi(gcd(i,j))\)
题解:\(\sum_{i==1}^n\sum_{j=1}^n\sum_{d=1}^n[gcd(i,j)==d]*\phi(d)\)
\(=\sum_{d=1}^n\phi(d)*\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)==d]\)
\(=\sum_{d=1}^n\phi(d)*\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}[gcd(i,j)==1]\)
\(=\sum_{d=1}^n\phi(d)*(2*\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}\phi({\lfloor \frac{n}{d} \rfloor})-1)\)
\(=\sum_{d=1}^n\phi(d)*sum(\lfloor \frac{n}{d} \rfloor)-sum(n)\)
求个前缀和分块搞一搞就好了
/**************************************************************
Problem: 4804
User: walfy
Language: C++
Result: Accepted
Time:4108 ms
Memory:167304 kb
****************************************************************/
//#pragma GCC optimize(2)
//#pragma GCC optimize(3)
//#pragma GCC optimize(4)
//#pragma GCC optimize("unroll-loops")
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast,no-stack-protector")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include<bits/stdc++.h>
#define fi first
#define se second
#define db double
#define mp make_pair
#define pb push_back
#define pi acos(-1.0)
#define ll long long
#define vi vector<int>
#define mod 998244353
#define ld long double
#define C 0.5772156649
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#define pll pair<ll,ll>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define pii pair<int,int>
//#define cd complex<double>
#define ull unsigned long long
#define base 1000000000000000000
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define fin freopen("a.txt","r",stdin)
#define fout freopen("a.txt","w",stdout)
#define fio ios::sync_with_stdio(false);cin.tie(0)
template<typename T>
inline T const& MAX(T const &a,T const &b){return a>b?a:b;}
template<typename T>
inline T const& MIN(T const &a,T const &b){return a<b?a:b;}
inline void add(ll &a,ll b){a+=b;if(a>=mod)a-=mod;}
inline void sub(ll &a,ll b){a-=b;if(a<0)a+=mod;}
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll qp(ll a,ll b){ll ans=1;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod,b>>=1;}return ans;}
inline ll qp(ll a,ll b,ll c){ll ans=1;while(b){if(b&1)ans=ans*a%c;a=a*a%c,b>>=1;}return ans;}
using namespace std;
const double eps=1e-8;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int N=10000000+10,maxn=400000+10,inf=0x3f3f3f3f;
int prime[N],cnt,phi[N];
bool mark[N];
ll sum[N];
void init()
{
phi[1]=1;
for(int i=2;i<N;i++)
{
if(!mark[i]){prime[++cnt]=i,phi[i]=i-1;}
for(int j=1;j<=cnt&&i*prime[j]<N;j++)
{
mark[i*prime[j]]=1;
phi[i*prime[j]]=phi[i]*phi[prime[j]];
if(i%prime[j]==0)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
}
}
for(int i=1;i<N;i++)sum[i]=sum[i-1]+phi[i];
}
int main()
{
init();
int T;scanf("%d",&T);
while(T--)
{
ll n,ans=0;
scanf("%lld",&n);
for(ll i=1,j;i<=n;i=j+1)
{
j=n/(n/i);
ans+=(sum[j]-sum[i-1])*sum[n/i];
}
printf("%lld\n",2*ans-sum[n]);
}
return 0;
}
/********************
********************/
bzoj4804: 欧拉心算 欧拉筛的更多相关文章
- bzoj 4804 欧拉心算 欧拉函数,莫比乌斯
欧拉心算 Time Limit: 15 Sec Memory Limit: 256 MBSubmit: 408 Solved: 244[Submit][Status][Discuss] Descr ...
- [BZOJ4804]欧拉心算:线性筛+莫比乌斯反演
分析 关于这道题套路到不能再套路了没什么好说的,其实发这篇博客的目的只是为了贴一个线性筛的模板. 代码 #include <bits/stdc++.h> #define rin(i,a,b ...
- 【bzoj4804】欧拉心算 欧拉函数
题目描述 给出一个数字N 输入 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10^7 输出 按读入顺序输出答案. 样例输入 1 1 ...
- BZOJ 4804: 欧拉心算 欧拉函数
Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10^7 题解: 求 $\sum_ ...
- 【BZOJ4804】欧拉心算 莫比乌斯反演+线性筛
[BZOJ4804]欧拉心算 Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10 ...
- 【bzoj4804】欧拉心算 解题报告
[bzoj4804]欧拉心算 Description 给出一个数字\(N\),计算 \[\sum_{i=1}^n\sum_{j=1}^n \varphi(\gcd(i,j))\] Input 第一行为 ...
- BZOJ_4804_欧拉心算_欧拉函数
BZOJ_4804_欧拉心算_欧拉函数 Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N&l ...
- 【luogu3768】简单的数学题 欧拉函数(欧拉反演)+杜教筛
题目描述 给出 $n$ 和 $p$ ,求 $(\sum\limits_{i=1}^n\sum\limits_{j=1}^nij\gcd(i,j))\mod p$ . $n\le 10^{10}$ . ...
- GCD nyoj 1007 (欧拉函数+欧几里得)
GCD nyoj 1007 (欧拉函数+欧几里得) GCD 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 The greatest common divisor ...
随机推荐
- iis默认文档有什么用?
设置默认文档就是指在只输入路径,不输入具体网页名的时候,浏览器显示的默认网页名称. 比如说,服务器地址:http://123.xxx.com,在未设置默认文档的时候或指定的默认文档不存在时,要正常访问 ...
- oracle单行函数 之 时间函数
select systemdate from dual --得到时间 select systemdate+300 from dual --日期 +数字=日期,表示若干天之后的日期 select s ...
- gulp结合webpack开启多页面模式,配置如下
首先老规矩哈.全局包安装先 cnpm install webpack -g cnpm install gulp -g cnpm install babel -g //转换Es6 上面的整合在一起安装可 ...
- Shiro学习笔记(二)
首先还是先搭建工程运行环境 依旧搭建的是Maven工程,如果不是Maven 也可以去网上找jar包然后导入 (我使用Maven主要是找依赖配置文件就行,我自己导jar包的时候就是很容易报错) 还是先 ...
- Using git-flow to automate your git branching workflow
Using git-flow to automate your git branching workflow Vincent Driessen’s branching model is a git b ...
- 以结算价交易TAS和以市价交易TAM
CME Group的合约规格中提到TAS和TAM交易,如:Gold Futures Contract Specs Gold 期货 合约规格 Trading at Settlement (TAS) is ...
- HTML基本内容
设置背景色:<body bgcolor="#AAAAAA">,设置背景图:<body background="1.png">. 颜色的知 ...
- data:image/png;base64 上传图像将图片转换成base64格式
大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJ ...
- Codeforces 781D Axel and Marston in Bitland
题目链接:http://codeforces.com/contest/781/problem/D ${F[i][j][k][0,1]}$表示是否存在从${i-->j}$的路径走了${2^{k}} ...
- 【BZOJ】3143: [Hnoi2013]游走
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3143 显然如果一条边期望被走过的次数越多,我们就应该给它的编号越小. 所以问题变为如何求每 ...