洛谷 P1965 转圈游戏

题目

P1965 转圈游戏

思路

数论。题目就是让你判断一下第\(x\)个人走了\(m \times 10^k\)步之后到了哪里。总共走的步数为\(m \times 10^k\)直接走肯定会TLE,对\(n\)取模之后再走就好了。

\(Code\)

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#define int long long
using namespace std;
int n,m,k,x;
int qpow(int a,int b,int mod){
	int ans=1,base=a;
	while(b){
		if(b&1) ans=ans*base%mod;
		base=base*base%mod;
		b>>=1;
	}
	return ans;
}
inline void read(int &T){
	int x=0;bool f=0;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	T=f?-x:x;
}

signed main(){
	read(n),read(m);
	read(k),read(x);
	m%=n;
	int qwq=qpow(10,k,n);
	int ans=m*qwq%n;
	while(ans--){
		x++;
		if(x==n) x=0;
	}
	cout<<x<<endl;
	return 0;
}
posted @ 2019-09-08 20:19  yu__xuan  阅读(...)  评论(...编辑  收藏