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

而且我们爱蜜莉雅碳是有英文名哒!是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. 在阿里云上遇见更好的Oracle(三)

    鬼扯完“去IOE”,继续回来说说这个系列文章的主角Oracle. 在DB-Engine的数据库排行榜中,Oracle已经占据了多年的第一(最新排名可以点击“阅读原文”).当然因为互联网行业的兴起,My ...

  2. 贝叶斯网(1)尝试用Netica搭建简单的贝叶斯网并使用贝叶斯公式解释各个bar的结果

    近来对贝叶斯网十分感兴趣,按照博客<读懂概率图模型:你需要从基本概念和参数估计开始>给出的第一个例子,试着搭建了一个student网. (1)点击绿F,对条件概率表予以输入(包括两个祖先节 ...

  3. c#执行插入sql 时,报错:异常信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应

    问题:c#执行插入sql 时,报错:异常信息:超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决: SqlCommand cmd = new SqlCommand(); cmd.Comman ...

  4. idea 快捷键(复制)

    Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ ...

  5. Spring定时器调用Hibernate方法无法获得SessionFactory的解决办法

    由于在Spring定时器中无法通过注解的方式获取bean,因此需要通过原生的方式获取.获取session的方式如下: WebApplicationContext wac = ContextLoader ...

  6. spring笔记(二)

    共性问题: 1. 服务器启动报错,什么原因? * jar包缺少.jar包冲突 1) 先检查项目中是否缺少jar包引用 2) 服务器: 检查jar包有没有发布到服务器下: 用户库jar包,需要手动发布到 ...

  7. 【bzoj2659】[Beijing wc2012]算不出的算式 数论

    题目描述 求,其中p和q是奇质数. 输入 只有一行,两个奇质数,分别表示p,q. 输出 一个数,表示算式结果. 样例输入 5 样例输出 6 题解 数论 神TM数学结论题... 当$p\neq q$时, ...

  8. ASP.NET页面之间传值QueryString(1)

    QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能用这 ...

  9. [Leetcode] Linked list cycle ii 判断链表是否有环

    Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull. Follo ...

  10. 洛谷P4593 [TJOI2018]教科书般的亵渎 【数学】

    题目链接 洛谷P4593 题解 orz dalao upd:经典的自然数幂和,伯努利数裸题 由题我们只需模拟出代价,只需使用\(S(n,k) = \sum\limits_{i = 1}^{n} i^{ ...