HDU 4983 Goffi and GCD(数论)
HDU 4983 Goffi and GCD
思路:数论题。假设k为2和n为1。那么仅仅可能1种。其它的k > 2就是0种,那么事实上仅仅要考虑k = 1的情况了。k = 1的时候,枚举n的因子,然后等于求该因子满足的个数,那么gcd(x, n) = 该因子的个数为phi(n / 该因子),然后再利用乘法原理计算就可以
代码:
#include <cstdio>
#include <cstring>
#include <cmath>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
HDU 4983 Goffi and GCD(数论)相关推荐
- hdu 4983 Goffi and GCD(欧拉函数)
Problem Description Goffi is doing his math homework and he finds an equality on his text book: gcd( ...
- hdu 4676 Sum Of Gcd 莫队+phi反演
Sum Of Gcd 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4676 Description Given you a sequence of ...
- hdu 4983(欧拉函数)
题目大意:给出一组n和k,求解满足公式:gcd(n-a,n)*gcd(n-b,n)=n^k的(a,b)的对数,结果对(1e9+7)取模. 先证明:对于1<=x<=n,有gcd(n-x , ...
- HDU 2504 又见GCD
HDU 2504 文章目录 Problem Description 题解: 代码: Problem Description 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于 ...
- HDU 1576 A/B(数论简单题,求逆元)
A/B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 5755 Gambler Bo(数论)
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5755 题目大意: 给你一个矩阵,矩阵中是0,1,2三个数,你每次可以给其中一个数加2,但 ...
- HDU 2504 又见GCD
又见GCD Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- CodeForces - 1459C Row GCD(数论+推公式)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的数组 aaa,再给出一个长度为 mmm 的数组 bbb,现在要求输出,当 j=1,2,...,mj = 1,2,...,mj=1,2,...,m ...
- P1447-[NOI2010]能量采集【GCD,数论,容斥】
正题 题目链接:https://www.luogu.org/problemnew/show/P1447 题目大意 求∑i=1n∑j=1mgcd(i,j)∗2−1\sum_{i=1}^n\sum_{j= ...
- jzoj3384-理工男【欧拉定理,gcd,数论】
正题 大意 给出一个分数ABAB\frac{A}{B}求它在k进制下的小数循环. 如果是有限小数直接输出位数 无限循环输出混循环节和循环节长度. 代码 直接切正题 用a数组表示每一位的余数,然后a[0 ...
最新文章
- 基于视角特征提取的3D检测方法汇总
- 多图片每隔2S循环播放
- AMG8833的使用与stm32驱动代码
- “Duke选择大奖”荟萃2009最具创新的Java技术应用
- 【10.9】multiprocessing多进程编程
- 计算机视觉编程——图像内容分类
- “压扁数组”技巧(flattening the array)
- 同域下iframe操作时,js访问document出现拒绝访问的问题原因
- 06Struts2国际化实现
- 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题 1
- 《腾讯iOS测试实践》一一1.8 小结
- JDBC链接MySQL数据库
- 修改软件的ico图片方法
- 焦作机器人编程比赛_焦作市山阳区东环小学在第二十届全国中小学电脑制作活动“机器人竞赛”焦作选拔赛中创佳绩...
- 远程访问SOAP协议接口
- 手把手带你实现 Docker 部署 Redis 集群
- SAP BASIS ADM100 中文版 Unit 9(5)
- 忆龙2009:印度反倾销棒打中兴华为 商务部紧急应对
- python字符串编码及乱码解决方案
- 计算机应用大赛宣传稿,江苏开放大学计算机应用基础中国名城宣传片
热门文章
- 苹果Mac 2D/3D数字雕刻软件:Pixologic Zbrush
- Mac高效笔记软件GoodNotes 5
- MAC完全卸载/删除Parallels Desktop虚拟机和PD虚拟机文件的方法
- 如何使用Omni Remover Mac版释放Mac上的空间
- 更新:第6章已上线!最酷的程序员应该知道的【LLVM】!
- zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》
- 确保大数据安全的5个最佳实践措施
- java 基础数据结构源码详解及数据结构算法
- [基础] Array.prototype.indexOf()查询方式
- 添加Centos缺失的命令