首页 > 其他 > 详细

NOIP2013转圈游戏

时间:2015-09-13 23:03:50      阅读:370      评论:0      收藏:0      [点我收藏+]

不得不说NOIP的水题就是牛!

题目简述:给你n个人(0 - n-1) 组成一个环,每次一起前进m步,问编号为x的人在移动了10 ^ k后,他的位置是什么

咱家还能说啥,假设我们把它拉成一个无限长的链,那么每m个长度就是一圈,所以答案就是 (x + m * 10 ^ k) % n

接下来就是快速幂了,记得要时时模就好了,轻松水过~~

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>

using namespace std;

typedef long long ll;

ll fast_power(ll,ll,ll);

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

ll fast_power(ll a,ll b,ll mod){
    ll ans = 1;
    while(b){
        if (b & 1)    
            ans *= a;
        ans %= mod;
        b >>= 1;
        a = a * a % mod;
    }
    return ans;
}

 

NOIP2013转圈游戏

原文:http://www.cnblogs.com/GENEVE/p/4805693.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!