当前位置: 首页 > news >正文

【HDOJ】4983 Goffi and GCD

题意说的非常清楚,即求满足gcd(n-a, n)*gcd(n-b, n) = n^k的(a, b)的不同对数。显然gcd(n-a, n)<=n, gcd(n-b, n)<=n。因此当n不为1时,当k>2时,不存在满足条件的(a,b)。而当k=2时,仅存在(n, n)满足条件。因此仅剩n=1以及k=1需要单独讨论:
当n = 1时,无论k为何值,均有且仅有(1,1)满足条件,此时结果为1;
当k = 1时,即gcd(n-a, n)*gcd(n-b, n) = n,则令gcd(n-a, n) = i,则gcd(n-b, n) = n/i。也即求(n-a)/i与n/i互素且(n-b)/(n/i)与n/(n/i)互素的(a, b)的对数和。

 1 #include <cstdio>
 2 #include <cmath>
 3 
 4 const int MOD = (1e9+7);
 5 
 6 __int64 getNotDiv(int x) {
 7     int i, r = x;
 8     __int64 ret = x;
 9 
10     for (i=2; i*i<=r; ++i) {
11         if (x%i == 0) {
12             ret -= ret/i;
13             while (x%i == 0)
14                 x /= i;
15         }
16     }
17     if (x > 1)
18         ret -= ret/x;
19     return ret;
20 }
21 
22 int main() {
23     int n, k;
24     int i, j;
25     __int64 ans, tmp;
26 
27     while (scanf("%d %d", &n, &k) != EOF) {
28         if (n==1 || k==2)
29             printf("1\n");
30         else if (k==1) {
31             ans = 0;
32             for (i=1; i*i<=n; ++i) {
33                 if (n%i == 0) {
34                     j = n/i;
35                     tmp = getNotDiv(i)*getNotDiv(j)%MOD;
36                     if (j == i) {
37                         ans += tmp;
38                     } else {
39                         ans += tmp<<1;
40                     }
41                     ans %= MOD;
42                 }
43             }
44             printf("%I64d\n", ans%MOD);
45         } else {
46             printf("0\n");
47         }
48     }
49 
50     return 0;
51 }

 

转载于:https://www.cnblogs.com/bombe1013/p/3938266.html

相关文章:

  • StarkSoft题库管理系统(二)--生成word格式试卷
  • PXE结合kiskstart实现自动化安装系统
  • dm6446开发大全资料号称宇宙最全
  • java空指针注意事项
  • linux下个人权限的Apache服务器的php的yii搭建
  • atitit. 日志系统的原则and设计and最佳实践(1)-----原理理论总结.
  • C语言中迭代器的设计与使用
  • 利用ACL库快速创建你的网络程序--ACL_VSTREAM 流的使用
  • 架构反思案例之“分布式”的架构案例
  • HttpClient---------demo
  • SQLSERVER存储过程基本语法
  • 安装redis
  • C#实现一个最简单的HTTP服务器
  • 【特别推荐】14个支持响应式设计的流行前端开发框架
  • 2012毕业找工作记录点滴
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • Create React App 使用
  • create-react-app做的留言板
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java-详解HashMap
  • 分享一份非常强势的Android面试题
  • 回顾2016
  • 基于Android乐音识别(2)
  • 前端之React实战:创建跨平台的项目架构
  • 微信小程序实战练习(仿五洲到家微信版)
  • 详解移动APP与web APP的区别
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #include<初见C语言之指针(5)>
  • #pragma pack(1)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (1)Android开发优化---------UI优化
  • (4.10~4.16)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (转)EOS中账户、钱包和密钥的关系
  • .NET 事件模型教程(二)
  • .NET和.COM和.CN域名区别
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [1]-基于图搜索的路径规划基础
  • [ESP32] 编码旋钮驱动
  • [IE9] IE9 beta版下载链接
  • [Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用
  • [LeetCode] Copy List with Random Pointer 拷贝带有随机指针的链表
  • [MicroPython]TPYBoard v102 CAN总线通信
  • [MYSQL]mysql常用操作命令
  • [PTA]数组循环右移
  • [Python] 输入与输出
  • [Qualcomm][Power]QCM2290功耗异常问题