题目大意:求\[\sum\limits_{i=1}^ngcd(n,i)\]

题解:发现 gcd 中有很多是重复的,因此考虑枚举 gcd。
\[\sum\limits_{i=1}^ngcd(n,i)=\sum\limits_{d|n}d\sum_{i=1}^n[gcd(i,n)=d]=\sum\limits_{d|n}d\sum_{i=1}^{\lfloor n/d\rfloor}[gcd(i,{n\over d})=1]=\sum\limits_{d|n}d\phi(n/d)\]

代码如下

#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) x.begin(),x.end()
#define cls(a,b) memset(a,b,sizeof(a))
#define debug(x) printf("x = %d\n",x)
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
const int dx[]={0,1,0,-1};
const int dy[]={1,0,-1,0};
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
//const int maxn=
const double eps=1e-6;
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll sqr(ll x){return x*x;}
inline ll read(){ll x=0,f=1;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch));do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch));return f*x;
}
/*--------------------------------------------------------*/ll n;inline ll phi(ll x){ll ret=x;for(int i=2;i<=sqrt(x);i++){if(x%i==0){ret=ret/i*(i-1);while(x%i==0)x/=i;}}if(x>1)ret=ret/x*(x-1);return ret;
}
ll calc(ll x){ll ret=0;for(int i=1;i<=sqrt(x);i++){if(x%i==0){ret+=(ll)i*phi(x/i);if(i*i!=x)ret+=(ll)x/i*phi(i);}}return ret;
}void read_and_parse(){n=read();
}void solve(){printf("%lld\n",calc(n));
}int main(){read_and_parse();solve();return 0;
}

转载于:https://www.cnblogs.com/wzj-xhjbk/p/10711122.html

【P2303】Longge的问题相关推荐

  1. P2303 [SDOI2012] Longge 的问题

    P2303 [SDOI2012] Longge 的问题 思路 我们显然可以枚举每一对数的gcdgcdgcd进行求解,进而我们有如下推导: =>∑i=1ngcd(i,n)=>\sum _{i ...

  2. P2303 [SDOI2012] Longge(数论/欧拉函数)

    P2303 [SDOI2012] Longge 一道看似非常基础的数论题,但是蕴含了非常多的知识,求解 ∑i=1ngcd(i,n)\sum_{i=1}^ngcd(i,n) i=1∑n​gcd(i,n) ...

  3. 【洛谷 P2303】 [SDOi2012]Longge的问题 (欧拉函数)

    题目链接 题意:求\(\sum_{i=1}^{n}\gcd(i,n)\) 首先可以肯定,\(\gcd(i,n)|n\). 所以设\(t(x)\)表示\(gcd(i,n)=x\)的\(i\)的个数. 那 ...

  4. bzoj2705(洛谷P2303): [SDOI2012]Longge的问题 (欧拉函数)

    题意 求 ∑i=1ngcd(i,n)∑i=1ngcd(i,n)\sum\limits_{i=1}^ngcd(i,n) 题解 这题-真的要写一下了- 其实吧,结果就是 ∑i|ni∗φ(ni)∑i|ni∗ ...

  5. bzoj 2705: [SDOI2012]Longge的问题——欧拉定理

    Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一 ...

  6. BZOJ2705 [SDOI2012]Longge的问题 欧拉函数

    Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 3874  Solved: 2469 [Submit][Status][Discuss] Descrip ...

  7. 【bzoj2705】[SDOI2012]Longge的问题 欧拉函数

    题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). 输入 一个整数,为N. 输出 ...

  8. POJ 2480 Longge#39;s problem 积性函数

    题目来源:POJ 2480 Longge's problem 题意:求i从1到n的gcd(n, i)的和 思路:首先假设m, n 互质 gcd(i, n*m) = gcd(i, n)*gcd(i, m ...

  9. bzoj 2705: [SDOI2012]Longge的问题(欧拉函数)

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 3077  Solved: 1914 [Submit ...

最新文章

  1. 【组队学习】【25期】Datawhale组队学习内容介绍
  2. django rest-framework 1.序列化 一
  3. 在mpvue中引用vant weapp
  4. c语言中语句作用,学习C语言的用途~
  5. hex文件matlab处理,基于MATLAB生成Intel HEX文件
  6. python(day04)
  7. C# List与Array性能比较
  8. 这可能是最好的RxJava 2.x 教程(完结版)
  9. 常见排序算法之快速排序
  10. C#反编译软件查看dll文件源码
  11. 有道Java_有道词典java版下载-有道词典java豪华版v1.0.7 安卓版 - 极光下载站
  12. java 使用response方式下载txt文件
  13. 山东理工大学2021年下半年实验室安全考试
  14. 科技T3国产平台!成功搭载“翼辉国产实时系统SylixOS”
  15. 校园内网服务器维修视频,怎么搭建校园高清视频直播系统
  16. 鉴频鉴相器(PFD)不同结构讨论
  17. miui中的网页链接调用服务器,miui新增网页链接调用服务有什么用?
  18. 微信分享透明背景图片背景变黑
  19. mac中手动切换go版本
  20. 日增进:Oracle dump文件的导入导出

热门文章

  1. Docker_虚拟化-云服务-云原生-容器概念-安装
  2. js中与‘‘相区别的模板字符串` `的使用方法
  3. 机器学习 2.1.1 最小二乘估计
  4. JS(正则、简单邮箱验证、正则小练习)
  5. 51单片机延时函数、如何计算
  6. 泰拉瑞亚安装、运行教程
  7. ROS2 foxy 学习5 : Action 行动
  8. Chrome-油猴插件及安装
  9. thinkjs能在浏览器html文件,thinkjs框架的默认模板引擎Nunjucks的中文文档
  10. RK3368固件烧写