转圈游戏

题面

这道题不难可以推出(x+m*10^k)%n

根据模运算的的分配率可以得到 (x%n+m%n*10^k%n)%n只需用快速幂求出10^k就可以了

#include<iostream> 
#include<cstdio> 
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<cstring>
using namespace std; 
int n,m,k,x;
int ksm(int a,int b)
{
    int re=1;
    int t=a;
    while(b)
    {
        if(b&1) re=re*t%n; 
        t=t*t%n;
        b>>=1;
    }
    return re;
}
int main()
{
    cin>>n>>m>>k>>x;
    cout<<(x%n+m%n*ksm(10,k)%n)%n;
    return 0;
}

  

posted @ 2019-09-22 13:58  [jackeylove]  阅读(172)  评论(0编辑  收藏  举报