您的位置:首页 > 其它

【NOIP】提高组2013 转圈游戏

2016-08-13 21:40 267 查看

【算法】快速幂运算

【题解】ans=(m*10^k+x)%n,用快速幂计算10^k即可,复杂度为O(log k)。

#include<cstdio>
long long n,m,k,x,ans;
long long quickpow(long long x,long long n,long long k)
{
long long ans=1;
while(n>0)
{
if(n&1)
ans=(ans*x)%k;
n>>=1;
x=(x*x)%k;
}
return ans;
}
int main()
{
scanf("%lld%lld%lld%lld",&n,&m,&k,&x);
printf("%lld",(x+m*quickpow(10,k,n))%n);
return 0;
}
View Code

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: