博客
关于我
Codeforces Beta Round #17 D. Notepad 欧拉降幂
阅读量:632 次
发布时间:2019-03-14

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

原题链接:

目录

题意

求 (b-1) * b n-1 % c,b∈[2,101000000 ],n∈[1, 101000000 ]

分析

非常裸的欧拉降幂

在这里插入图片描述
根据定义可以化简n-1,特殊的b小于φ(m)的情况注意一下

b直接边读入边取膜即可

Code

#include 
using namespace std;//#define ACM_LOCAL#define fi first#define se second#define il inline#define re registertypedef long long ll;typedef pair
PII;typedef unsigned long long ull;const int N = 2e5 + 10;const int M = 1e6 + 10;const ll INF = 1e18 + 5;const double eps = 1e-5;const int MOD = 998244353;ll init(ll n) { ll m = (int)sqrt(n + 0.5); 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;}ll ksm(ll a, ll b, ll mm) { ll res = 1, base = a; while (b) { if (b & 1) res = res * base % mm; base = base * base % mm; b >>= 1; } return res;}void solve() { string b, n; cin >> b >> n; ll c; cin >> c; ll mm = init(c); ll b_1, b_ = 0;//取b-1,b的值 for (int i = 0; i < b.size(); i++) b_ = b_ * 10 + (b[i] - '0'), b_ %= c; b_1 = (b_ - 1 + c) % c; ll n_1 = 0, flag = 0;//取n-1的值 for (int i = 0; i < n.size(); i++) { n_1 = n_1 * 10 + (n[i] - '0'); if (n_1 - 1 >= mm) n_1 %= mm, flag = 1; } n_1 = (n_1 - 1 + mm) % mm; if (flag) n_1 += mm; ll ans = ksm(b_, n_1, c); ans = ans * b_1 % c; if (ans == 0) cout << c << endl; else cout << ans << endl;}signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);#ifdef ACM_LOCAL freopen("input", "r", stdin); freopen("output", "w", stdout);#endif solve();}

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

你可能感兴趣的文章
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>
MySql中怎样使用case-when实现判断查询结果返回
查看>>