九度[1085]求root(N,K)
2016-02-01 20:23
225 查看
# include<iostream> using namespace std; int main(){ long long int x=0,y=0,k=0; while(cin>>x>>y>>k) { long long int sum=1; k--; while(y) { if(y%2!=0) sum=(sum*x)%k; x=(x*x)%k; y=y/2; } if(sum==0) cout<<k<<endl; else cout<<sum<<endl; } return 0; }
参考论坛代码,以及相关博客自己总结如下:
如果N>=K 则N=a0+a1*k+a2*k2+……+an*kn;
N(r)=a0+a1+a2+a3+……+an;
N-N(r)=a1*(k-1)+a2*(k2-1)+……+an(kn-1)
(N-N(r))%(k-1)=0;
N(r)=N%(k-1);
故如果N(r)==0 N=k-1;
否则,N(r)就是我们要求的结果;
至于求N,则用到了快速幂取模:(a*b)mod n = ((a mod n) * b ) mod n;
相关文章推荐
- (5)调度器(scheduler)
- 03-lvs-persistence
- ubuntu上面装matlab
- 让你的 Qt 桌面程序看上去更加 native(一共六篇)
- pip 在windows下的更新升级
- destoon中隐藏input框的值的设定
- uva725 - Division
- Qt 内存管理机制
- underscorejs-groupBy学习
- (4)基础概念介绍——导演、场景、层、精灵
- 摒弃以往的工作方法
- utunbu启动进入文本界
- VB6与VB7(VB.NET)的异同
- 使用Oracle自带的系统包和过程监控其它会话SQL语句的执行计划等信息
- underscorejs-sortBy学习
- PHP 反射机制Reflection
- 用Fiddler在Android上抓HTTPS包
- Unity问答第2期
- (3)在Windows7上搭建Cocos2d-x
- 设置存储免密码登录