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

NOIP2013转圈游戏

时间:2015-09-13 23:04:07      阅读:192      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!