出题人怎么这么不认真啊==明明官方译名是爱蜜莉雅……

而且我们爱蜜莉雅碳是有英文名哒!是Emilia。你那个aimiliya我实在是无力吐槽……

不过抱图跑23333首先这很像约数个数和函数诶!
但是唯一的不同是,D(1)=1,F(1)=0.
那么如果就是D,我们怎么做?
原题意思是求以下式子:
$Ans\sum\limits_{i=1}^{n}d(gcd(i,n))$
我们知道:
$D(n)=\sum\limits_{d|n}1$
所以:
$Ans=\sum\limits_{d|n}\sum\limits_{i=1}^{\frac{n}{d}}D(d)[gcd(i,\frac{n}{d}==1]$
$Ans=\sum\limits_{d|n}D(d)*\sum\limits_{i=1}^{\frac{n}{d}}[gcd(i,\frac{n}{d}==1]$
第二个求和就相当于枚举跟$\frac{n}{d}$互质的数。这不是$\phi$的定义吗?
所以:
$Ans=\sum\limits_{d|n}D(d)*\phi(\frac{n}{d})$
这是……狄利克雷卷积?
$D*\phi=1*1*\phi=id*1$
$Ans=\sum\limits_{d|n}\frac{n}{d}$
那么如果是这个呢?这个f(1)=0的话,我们相当于把1多算了$\phi(n)$次,减去就行了。
所以最后:
$Ans=\sum\limits_{d|n}\frac{n}{d}-\phi(n)$
复杂度:$O(\sqrt{n})$

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
ll calcsum(ll n){
int m=(int)sqrt(n+0.5);
ll cnt=,ans=;
for(int i=;i<=m;i++){
if(n%i==){
ans+=i;if(i*i!=n)ans+=n/i;
else break;
}
}
return ans;
}
ll calcphi(ll n){
int m=(int)sqrt(n+0.5);
ll ans=n;
for(int i=;i<=m;i++)if(n%i==){
ans=ans/i*(i-);
while(n%i==)n/=i;
if(n==)break;
}
if(n>)ans=ans/n*(n-);
return ans;
}
int main(){
freopen("aimiliyadehelp.in","r",stdin);
freopen("aimiliyadehelp.out","w",stdout);
cin>>n;
cout<<calcsum(n)-calcphi(n)<<endl;
return ;
}

【反演复习计划】【COGS2431】爱蜜莉雅的求助的更多相关文章

  1. 【反演复习计划】【51nod1594】Gcd and Phi

    现在感觉反演好多都是套路QAQ…… #include<bits/stdc++.h> using namespace std; ; typedef long long ll; int n,c ...

  2. 【反演复习计划】【COGS2432】爱蜜莉雅的施法

    也是一个反演. 第一次手动推出一个简单的式子,激动.jpg 原题意思是求:$Ans=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\phi(gcd(i,j))$随 ...

  3. 【反演复习计划】【COGS2433】&&【bzoj3930,CQOI2015选数】爱蜜莉雅的冰魔法

    同bzoj3930. (日常盗题图) #include<bits/stdc++.h> #define N 1000010 #define yql 1000000007 #define ll ...

  4. 【反演复习计划】【bzoj1011】zap-queries

    快三个月没做反演题了吧…… 感觉高一上学期学的全忘了…… 所以还得从零开始学推式子. # bzoj1011 标签(空格分隔): 未分类 --- 原题意思是求以下式子:$Ans=\sum\limits_ ...

  5. 【反演复习计划】【bzoj4407】于神之怒加强版

    #include<bits/stdc++.h> #define N 5000010 #define yql 1000000007 using namespace std; typedef ...

  6. 【反演复习计划】【bzoj2154】Crash的数字表格

    膜拜cdc……他的推导详细到我这种蒟蒻都能看得懂! 膜拜的传送门 所以我附一下代码就好了. #include<bits/stdc++.h> #define N 10000005 #defi ...

  7. 【反演复习计划】【bzoj3529】数表

    Orz PoPoQQQ大爷 按照他ppt的解法,这题可以划归到之前的题了OrzOrz 跪wy写的题解(Stealth Assassin)https://www.luogu.org/wiki/show? ...

  8. 【反演复习计划】【bzoj3994】DZY loves maths

    这题大概就是提取一下d,然后就跟前面的题目差不多了. #include<bits/stdc++.h> #define N 10000005 using namespace std; typ ...

  9. 【反演复习计划】【bzoj3994】约数个数和

    首先要用数学归纳证明一个结论,不过因为我实在是懒得打公式了... 先发代码吧. #include<bits/stdc++.h> #define N 50005 using namespac ...

随机推荐

  1. LeetCode - 1. Two Sum(8ms)

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  2. DP入门(1)——数字三角形问题

    一.问题描述 如上图所示,有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数.现请你在此数字三角形中寻找一条从首行到最下行的路径,使得路径上所经过的数字之和 ...

  3. Linux arm64的虚拟内存布局

    原创翻译,转载请注明出处. 页表转换arm64在硬件体系结构上支持4级的每页大小为4K的页表转换,也支持3级的页大小64KB的页表转换.在linux arm64中,如果页的大小为4KB,使用3级页表转 ...

  4. C#中async和await用法

    .net 4.5中新增了async和await这一对用于异步编程的关键字. async放在方法中存在await代码的方法中,await放在调用返回Task的方法前. class Class1 { pr ...

  5. 【Autofac】- 创建的类的生命周期

    1.InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例.这也是默认的创建实例的方式. 官方文档解释:Configure the component so tha ...

  6. CF115B Lawnmower

    题目描述 You have a garden consisting entirely of grass and weeds. Your garden is described by an n×mn×m ...

  7. [洛谷P1892]团伙

    题目大意:有n个人,关系为:朋友的朋友是朋友,敌人的敌人是朋友.如果是朋友就在一个团队内,是敌人就不在,现在给出一关系,问最多有多少团伙.题解:并查集,建反集,如果是朋友,就把他们的并查集合并:如果是 ...

  8. B. Light It Up 思维题

    Recently, you bought a brand new smart lamp with programming features. At first, you set up a schedu ...

  9. xml数据格式

    <?xml version="1.0" encoding="utf-8"?> <country> <name>中国</ ...

  10. Java并发(4)- synchronized与CAS

    引言 上一篇文章中我们说过,volatile通过lock指令保证了可见性.有序性以及"部分"原子性.但在大部分并发问题中,都需要保证操作的原子性,volatile并不具有该功能,这 ...