博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ2480 Longge's problem gcd&&phi
阅读量:5355 次
发布时间:2019-06-15

本文共 1035 字,大约阅读时间需要 3 分钟。

题意简洁明了。做这题主要是温习一下phi的求法。令gcd(i,n)=k,实际上我们只需要求出有多少个i使得gcd(i,n)=k就可以了,然后就转化成了求phi(n/k)的和,但是n很大,我们不可能预处理出所有的phi,但是因为k的个数是O(sqrt(n))级别的,所以我们只需要求出sqrt(n)个数的phi就可以了,我们先预处理出所有的质因子及其个数,然后dfs一下就可以了。

#pragma warning(disable:4996)#include
#include
#include
#include
#include
#include
#define ll long longusing namespace std;int n;int cnt[35];int prime[35];int tot;ll ans;void dfs(int step, int phi){ if (step == tot){ ans += (ll)phi; return; } dfs(step + 1, phi); phi = phi / prime[step] * (prime[step] - 1); for (int i = 0; i < cnt[step]; i++){ dfs(step + 1, phi); }}int main(){ while (~scanf("%d",&n)) { memset(cnt, 0, sizeof(cnt)); tot = 0; int x = n; for (ll i = 2; i*i <= x; i++){ if (x%i == 0){ for (; x%i == 0; x /= i) cnt[tot]++; prime[tot++] = i; } if (x == 1) break; } if (x != 1) cnt[tot]++, prime[tot++] = x; ans = 0; dfs(0, n); printf("%lld\n", ans); } return 0;}

 

转载于:https://www.cnblogs.com/chanme/p/3575831.html

你可能感兴趣的文章
JavaScript中的BOM和DOM
查看>>
360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
查看>>
spring注入Properties
查看>>
jmeter(五)创建web测试计划
查看>>
python基本数据类型
查看>>
1305: [CQOI2009]dance跳舞 - BZOJ
查看>>
将html代码中的大写标签转换成小写标签
查看>>
jmeter多线程组间的参数传递
查看>>
零散笔记
查看>>
MaiN
查看>>
[Python学习] 简单网络爬虫抓取博客文章及思想介绍
查看>>
触发器课程SQL Server 知识梳理九 触发器的使用
查看>>
信息浏览器从Android的浏览器中传递cookie数据到App中信息浏览器
查看>>
客户端连接linux虚拟机集群报错
查看>>
linux下部署一个JavaEE项目的简单步骤
查看>>
hash储存机制
查看>>
[Android学习系列16]Android把php输出的json加载到listview
查看>>
20145205 《信息安全系统设计基础》第14周学习总结
查看>>
6)添加一个窗口的图标
查看>>
POJ - 1422 Air Raid 二分图最大匹配
查看>>