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

而且我们爱蜜莉雅碳是有英文名哒!是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. Java项目启动时候报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 解决办法

    今天在发布Java项目的时候又遇到    Neither the JAVA_HOME nor the JRE_HOME environment variable is defined  At leas ...

  2. Hibernate配置实体类的属性

    Hibernate配置实体类的属性既可以在页面显示关联实体类的所有属性,在插入该属性时又可以只插入单一属性 private String companyCode; private CompanyEnt ...

  3. Oracle入门书籍推荐

    作者:eygle |English [转载时请标明出处和作者信息]|[恩墨学院 OCM培训传DBA成功之道] 链接:http://www.eygle.com/archives/2006/08/orac ...

  4. 段寻址*****************************TBD

    fffff880`01b05be1 ff9708020000    call    qword ptr [rdi+208h] ds:002b:fffff980`0554ae88=fffffa8004b ...

  5. sometimes-ever js中创建数组,并往数组里添加元素

    数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长 ...

  6. SQL Server “超过了锁请求超时时段”错误

    错误提示:“已超过了锁请求超时时段. (Microsoft SQL Server,错误: 1222)”(英文:“Lock Request time out period exceeded.(Micro ...

  7. IntellIJ IDEA 配置 Git,顺带解决Git Push rejected问题

    1.下载便携版本git https://git-scm.com/download/win 弹出的下载取消,重新选择 2.解压自压缩文件. 3.配置IDEA 4.测试 5.配置终端环境shell为bas ...

  8. bug 跟蚊子的相似之处

    bug 跟蚊子的相似之处: 1.不知道藏在哪里. 2.不知道有多少. 3.总是在你即将睡觉休息的时候出现. 2 A:最近在看<一拳超人>,觉得咱们程序猿跟埼玉老师有点像啊! B:哪里像了? ...

  9. 洛谷 P2801 教主的魔法 解题报告

    P2801 教主的魔法 题目描述 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.--.N. ...

  10. WordPress后台edit-tags.php里无限栏目分类实现

    在 WordPress 里 http://localhost/wordpress3.6.1/wp-admin/edit-tags.php?taxonomy=category 这个链接可以显示 WP 里 ...