博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4983 Goffi and GCD(数论)
阅读量:4691 次
发布时间:2019-06-09

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

HDU 4983 Goffi and GCD

思路:数论题。假设k为2和n为1。那么仅仅可能1种。其它的k > 2就是0种,那么事实上仅仅要考虑k = 1的情况了。k = 1的时候,枚举n的因子,然后等于求该因子满足的个数,那么gcd(x, n) = 该因子的个数为phi(n / 该因子),然后再利用乘法原理计算就可以

代码:

#include 
#include
#include
typedef long long ll;const ll MOD = 1000000007;const int N = 35333;ll n, k, pn, vis[N];ll prime[N], frc[N], fn, cnt[N];void getprime() { pn = 0; for (ll i = 2; i < N; i++) { if (vis[i]) continue; prime[pn++] = i; for (ll j = i * i; j < N; j += i) vis[j] = 1; }}void getfrc(ll n) { fn = 0; for (ll i = 0; i < pn && n >= prime[i]; i++) { if (n % prime[i] == 0) { frc[fn] = prime[i]; cnt[fn] = 0; while (n % prime[i] == 0) { cnt[fn]++; n /= prime[i]; } fn++; } } if (n != 1) { frc[fn] = n; cnt[fn++] = 1; }}ll ans = 0;ll phi(ll n) { ll m = (ll)sqrt(n * 1.0); ll ans = n; for (ll i = 2; i <= m; i++) { if (n % i == 0) { ans = ans / i * (i - 1); while (n % i == 0) n /= i; } } if (n > 1) ans = ans / n * (n - 1); return ans;}void dfs(ll u, ll sum) { if (u == fn) { ll r = n / sum; ans = (phi(n / sum) * phi(sum) % MOD + ans) % MOD; return; } for (ll i = 0; i <= cnt[u]; i++) { dfs(u + 1, sum); sum *= frc[u]; }}ll solve() { getfrc(n); ans = 0; dfs(0, 1); return ans;}int main() { getprime(); while (~scanf("%I64d%I64d", &n, &k)) { if (n == 1) printf("1\n"); else if (k == 2) printf("1\n"); else if (k > 2) printf("0\n"); else { printf("%I64d\n", solve()); } } return 0;}

转载于:https://www.cnblogs.com/gccbuaa/p/6852180.html

你可能感兴趣的文章
C# 两个datatable中的数据快速比较返回交集或差集
查看>>
没有body怎么添加onload事件
查看>>
JS等比例缩小图片尺寸
查看>>
日留存、周留存、月留存,究竟怎样才能让更多的用户留下来?
查看>>
提升内外网文件交换安全性,这里有5点建议
查看>>
C# 合并Excel工作表
查看>>
关于oracle样例数据库emp、dept、salgrade的mysql脚本复杂查询分析
查看>>
一些有趣的代码
查看>>
从RTP到ORTP
查看>>
单文档切换OpenGL视图
查看>>
抽象类和接口的区别
查看>>
JS生成随机的字母数字组合的字符串
查看>>
[jQuery] form提交到iframe之后,获取iframe里面内容
查看>>
js new到底干了什么,new的意义是什么?
查看>>
python基础3
查看>>
淘宝大牛们——晒一晒淘宝网技术内幕
查看>>
Maven如何手动添加jar包到本地Maven仓库
查看>>
CocoStuff—基于Deeplab训练数据的标定工具【三、标注工具的使用】
查看>>
基于cropper.js的图片上传和裁剪
查看>>
Javaweb学习笔记4 使用Eclipse快速开发JSP
查看>>