题目大意: 累加从1到n,任意两个数的gcd(i,j)(1=<i<n&&i<j<=n)。

题解:假设a<b,如果gcd(a,b)=c。则gcd(a/c,b/c)=1。也就是说a/c和b/c互质,而与a/c互质的数一共有oula(a/c)个,也就是说这里的b/c一共有oula(a/c)种选择,同理,gcd(a,b)=c,a的选择就会有,oula(b/c)种。

所以 gcd(x,y)=1  ,枚举每一个x,然后在枚举x的k倍,答案就是ans[x*k]+=oula(x)*k。最后再求一下去前缀和就行了。

code:

  

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=+;
const ll N=+;
ll sum[N];
ll ans[N];
ll p[N];
void oula(){
ll i,j;
for(i=; i<=maxn; i++)
p[i]=i;
for(i=; i<=maxn; i+=)
p[i]/=;
for(i=; i<=maxn; i+=)
if(p[i]==i)
{
for(j=i; j<=maxn; j+=i)
p[j]=(p[j]/i*(i-));
}
}
void solve(){ for(ll x=;x<maxn;x++)
for(ll i=;i*x<maxn;i++)
ans[i*x]=ans[i*x]+p[x]*i; for(ll i=;i<maxn;i++) ans[i]+=ans[i-];
}
int main(){
oula();
ll n;
solve();
while(cin>>n,n) cout<<ans[n]<<endl;
return ;
}

最新文章

  1. 搭建Kafka集群(3-broker)
  2. js中的深复制和浅复制
  3. webform注册和Repeater
  4. 2D Skeletal Animation Ready
  5. linux shell expr 使用
  6. 零基础Android学习笔记-03 窗口间的数据传递
  7. android中给TextView或者Button的文字添加阴影效果
  8. (Android)View.getHeight或getWidth为0时的一些解决方案
  9. 深入了解View实现原理以及自定义View详解
  10. LayoutInflater类详解
  11. Zepto.js入门介绍
  12. POI tools 参数化生成excel表格
  13. 洛谷 [P1341]无序字母对
  14. 【MM系列】SAP的库存管理
  15. content字符生成配合CSS3 animation的点点点loading
  16. 读QT5.7源码(三)Q_OBJECT 和QMetaObject
  17. Java第三阶段学习(十三、会话技术、Cookie技术与Session技术)
  18. Mybatis 返回插入的主键
  19. netstat命令的安装
  20. Leetcode 78

热门文章

  1. hdu3336 Counting the string kmp的next数组的应用
  2. [AI开发]零代码公式让你明白神经网络的输入输出
  3. nmap端口扫描工具安装和使用方法
  4. 一文上手Tensorflow2.0之tf.keras(三)
  5. [Java8教程]Java8新特性进阶集合
  6. Selenium系列(十六) - Web UI 自动化基础实战(3)
  7. CentOS76 安装k8s1.18的简单步骤
  8. 俩个对象的hashCode()相同,则equals()也一定为true,对吗?
  9. 分享一款一直在维护的【网络开发运维|通用调试工具】: http请求, websocket,cmd, RSA,DES, 参数签名工具,脚本批量生成工具,google动态口令,端口检测,组件注册,js混淆...
  10. 使用jdbc实现简单的mvc模式的增删改查