码迷,mamicode.com
首页 > 其他好文 > 详细

Luogu P1965 转圈游戏

时间:2019-11-01 00:05:14      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:思考   class   names   turn   long   游戏   scanf   lld   快速   

Luogu P1965 转圈游戏

考场上遇到这种题,一定要画图推一下。
不难得到\(ans=(x+m\times 10^k)mod n\).
还有就是用同余定理时一定要仔细思考一下,然后该打快速幂就打。

#include<bits/stdc++.h>

using namespace std;

int n,m,k,x;
long long ans;

long long quickPower(int b,int p,int k) {
    long long ans=1;
    if(!p) {
        ans=1%k;
        return ans;
    }
    while(p) {
        if(p%2) {
            ans=(ans*b)%k;
        }
        b=(b*b)%k;
        p/=2;
    }
    return ans;
}

int main()
{
    scanf("%d%d%d%d",&n,&m,&k,&x);
    ans=(x%n+m*quickPower(10,k,n))%n;
    printf("%lld",ans);
    return 0;
}

Luogu P1965 转圈游戏

标签:思考   class   names   turn   long   游戏   scanf   lld   快速   

原文地址:https://www.cnblogs.com/luoshui-tianyi/p/11774481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!