依然是神奇的欧拉函数

若GCD(n,i)=k

则GCD(n/k,i/k)=1,

令i/k=x,有GCD(n/k,x)=1,

→k*GCD(n/k,x)=1中x的个数 = GCD(n,i)=k的和

范围就是求n的所有因子k

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+11;
typedef unsigned long long ll;
ll phi[maxn];
void euler(int n){
for(int i = 1; i <= n; i++){
phi[i]=i;
}
for(int i = 2; i <= n; i++){
if(phi[i]==i){
for(int j = i; j <= n; j+=i){
phi[j]=phi[j]/i*(i-1);
}
}
}
}
vector<int> P;
void chai(int n){
P.clear();
for(ll i = 1; i*i <= n; i++){
if(n%i==0){
P.push_back(i);
if(n/i!=i) P.push_back(n/i);
}
}
}
int a[maxn],n;
int main(){
euler(maxn-1);
while(scanf("%d",&n)!=EOF){
ll ans=0;
for(int i = 1; i <= n; i++) scanf("%d",&a[i]);
for(int i = 1; i <= n; i++){
chai(a[i]);
for(int j = 0; j < P.size(); j++){
ans+=phi[a[i]/P[j]]*P[j];
}
ans-=a[i];
}
printf("%llu\n",ans);
}
return 0;
}

最新文章

  1. 直播推流端弱网优化策略 | 直播 SDK 性能优化实践
  2. 图说C++对象模型:对象内存布局详解
  3. [No000041]如果你被ruby惯坏了,不如试试python3-在Windows下安装ipython
  4. ENode 1.0 - 框架的物理部署思路
  5. 25款创新的 PSD 格式搜索框设计素材【免费下载】
  6. Objective C类方法load和initialize的区别
  7. Nginx NLB 及Redis学习
  8. Commons Math - Primes
  9. debian 开启SSH
  10. jQuery登陆判断简单实现代码
  11. 用POP动画引擎实现衰减动画(POPDecayAnimation)
  12. 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照
  13. Qt将窗体变为顶层窗体
  14. 23.Linux-块设备驱动(详解)
  15. Git 和 Repo常用命令
  16. Python实现正则表达式匹配任意的邮箱
  17. Cylinder Candy(积分+体积+表面积+旋转体)
  18. echarts x轴文字显示不全(xAxis文字倾斜比较全面的3种做法值得推荐)
  19. Android widget
  20. Windows-设置系统服务不开机启动

热门文章

  1. Hadoop 使用Combiner提高Map/Reduce程序效率
  2. django: rest-framework的 分页和过滤
  3. linq to object 未完待续
  4. Mr_matcher的细节1
  5. Part3_lesson4---协处理器访问指令
  6. 奇妙的 Storage::url
  7. [GO]不同作用域的同名变量
  8. DFS小题
  9. Java静态变量的用法:伪单例
  10. GraphQL 优势之处