codeforces 17D. Notepad 欧拉函数降幂
来源:互联网 发布:北京金和网络股份员工 编辑:程序博客网 时间:2024/06/01 19:04
题意:计算(b-1)*b^(n-1)%c,数据范围 2 ≤ b < 10106, 1 ≤ n < 10106, 1 ≤ c ≤ 109
给出两个公式:
a^b%c=a^(b%phi(c)). 欧拉函数降幂,要求a与c互质
a^b %c= a^(b%phi(c)+phi(c)) %c (b>=phi(c),不大于时直接二分幂) 扩展的欧拉函数用于降幂,无互质要求
CODE:
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 1e6+10;LL c;char b[N]; ///bchar s[N]; ///nLL euler_phi(LL n){ ///计算单个phi函数 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 Pow(LL a,LL b,LL mod){ ///二分幂 LL ret = 1; LL A = a; while(b){ if(b&1) ret = ret*A%mod; A = A*A%mod; b >>= 1; } return ret;}int main(void){ scanf("%s%s%I64d",b,s,&c); int lenb = strlen(b); int lens = strlen(s); LL tb=0,tb1=0; ///b和b-1 for(int i = 0;i < lenb;i++){ ///计算b tb = (tb*10+b[i]-'0')%c; } tb1 = (tb-1+c)%c; ///计算b-1 LL phic = euler_phi(c); for(int i = lens-1;i >= 0;i--){ ///n-1 if(s[i] == 0) s[i] = '9'; else{ s[i]--; break; } } bool flag = false; ///标记n是否大于等于phic LL tn = 0; ///n for(int i = 0;i < lens;i++){ ///计算n if(tn >= phic) flag = true; if(flag) tn = (tn*10+s[i]-'0')%phic; else tn = tn*10+s[i]-'0'; } if(flag) tn += phic; ///n大于等于phic的时候才加 LL ans = Pow(tb,tn,c); ans = ans*tb1%c; if(ans == 0) printf("%I64d\n",c); else printf("%I64d\n",ans); return 0;}
0 0
- codeforces 17D. Notepad 欧拉函数降幂
- CF 17D - Notepad(数论取模+欧拉函数)
- CodeForces 17D Notepad (快速幂)
- codeforces round 17 D(扩展欧拉函数的应用)
- CodeForces 594D REQ(树状数组+欧拉函数)
- Codeforces 17D Notepad 简单数论
- CodeForces 17D Notepad(同余定理)
- Codeforces Beta Round #17D. Notepad
- Codeforces Beta Round #17 D. Notepad
- Codeforces Beta Round #17 D. Notepad
- 17D 扩展欧拉函数
- CodeForces 17 D.Notepad(指数循环定理)
- 欧拉函数 codeforces 776E
- 欧拉函数 codeforces 776E
- Codeforces Round #449 (Div. 1) D. Nephren Runs a Cinema 卡特兰数,逆元,欧拉函数,
- CodeForces 21D Traveling Graph 状压dp+欧拉回路
- Codeforces 508D Tanya and Password 欧拉通路Euler
- codeforces Round#288D Tanya and Password 欧拉通路
- 【杭电 5805 8.6 BC B NanoApe Loves Sequence】
- 基于tcl tk 的HyperGraph二次开发
- jquery animate step 实现 transform css3方法
- Android Studio设置自动编译工程
- POJ 2142
- codeforces 17D. Notepad 欧拉函数降幂
- Dom4j解析XML
- 深入理解java异常处理机制
- 类和类之间的关系
- android---------菜鸟集成环信(头像,昵称)
- hdu 5800 To My Girlfriend (dp)
- 数学在计算机图形学中的应用
- Ubuntu安装xgboost
- Activiti(八)——并行网关(ParallelGateWay)