NOIP 2013 提高组 ---转圈游戏

NOIP 2013 提高组 转圈游戏

NOIP 2013 提高组 ---转圈游戏_第1张图片
题解:
这是一道很显然的快速幂!

#include
using namespace std;
long long n,m,k,x,p;
long long pow(long long zs){
	if(zs==1){
		return 10%n;
	}
	if(zs==0) return 1%n;
	long long half=pow(zs>>1)%n;
	if(zs%2==0) return (half*half)%n;
	return (half*half*10)%n;
}
int main(){
	scanf("%lld%lld%lld%lld",&n,&m,&k,&x);
	p=pow(k);
	p=(p*m)%n;
	x=(x+p)%n;
	printf("%lld",x);
	return 0;
}

你可能感兴趣的:(提高组)