博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-1845 Sumdiv 逆元,特殊情况
阅读量:5879 次
发布时间:2019-06-19

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

详见代码:

#include 
#include
#include
#include
#define MOD 9901// 9901是一个素数 using namespace std;int A, B; // 计算A^B的所有因子的和 int num[50], ex[50], idx; // 记录所有的因子和指数void deal(int x) { idx = -1; for (int i = 2; i <= (int)sqrt(double (x)); ++i) { if (x % i == 0) { ++idx; num[idx] = i; ex[idx] = 0; while (x % i == 0) { ++ex[idx]; x /= i; } } } if (x != 1) { ++idx; num[idx] = x; ex[idx] = 1; } // 分解完成} /*A * x = 1 mod B;A * x - B * y = 1;要求1必须是gcd(A, B)的倍数,由于9901是一个素数,因此只有当A==9901是不符合要求的*/int exgcd(int a, int b,int &x, int &y) { if (b == 0) { x = 1, y = 0; return a; } int ret = exgcd(b, a % b, x, y); int t = x; x = y; y = t - a/b*y; return ret;}int getinv(int v) { v %= MOD; int a = v, b = MOD, x, y; exgcd(a, b, x, y); x = (x % MOD + MOD) % MOD; return x;}int _pow(int a, int b) { int ret = 1; a %= MOD; while (b) { if (b & 1) { ret *= a; ret %= MOD; } b >>= 1; a *= a; a %= MOD; } return ret;}// 1073741824 // 等比公式是 (num[i]^exp[i])^B = num[i]^exp[i]*B// 其因子和为num[i]^0 + num[i]^1 + ...num[i]^exp[i]*B// 化简之后就是 (num[i]^(exp[i]*B+1)-1)/(num[i]-1)int main() { int ret; while (scanf("%d %d", &A, &B) == 2) { ret = 1; deal(A); // 对A进行分解 for (int i = 0; i <= idx; ++i) { if (num[i] % MOD == 1) { // 这里要进行一下特殊处理,不然就直接去就0的逆元了 ret *= (ex[i]*B+1)%MOD; ret %= MOD; } else { ret *= ((_pow(num[i]%MOD, ex[i]*B+1)-1+MOD)%MOD*getinv(num[i]-1))%MOD; ret %= MOD; } } printf("%d\n", ret); } return 0; }

 

转载地址:http://zmdix.baihongyu.com/

你可能感兴趣的文章
为什么现在都用面向对象开发,为什么现在都用分层开发结构?
查看>>
【离散数学】 SDUT OJ 偏序关系
查看>>
写给学弟学妹的产品入门建议(持续更新)
查看>>
view视图总结
查看>>
oracle11g 数据库导出报“ EXP-00003:
查看>>
201521123009 《Java程序设计》第11周学习总结
查看>>
可解释的机器学习
查看>>
Python3之多线程学习
查看>>
aspx页面@Page指令解析
查看>>
POJ 2002
查看>>
MVC和MTV结构分析
查看>>
(转)微信网页扫码登录的实现
查看>>
SpringBoot2.x配置Cors跨域
查看>>
用AJAX实现页面登陆以及注册用户名验证
查看>>
mariadb启动报错:[ERROR] Can't start server : Bind on unix socket: Permission denied
查看>>
nginx的信号量
查看>>
30分钟新手git教程
查看>>
passwd的使用
查看>>
最爱的小工具,谁用谁知道!
查看>>
EntityFramework之一对一关系(二)
查看>>