洛谷 P1965 转圈游戏

题目

P1965 转圈游戏

思路

数论。题目就是让你判断一下第(x)个人走了(m imes 10^k)步之后到了哪里。总共走的步数为(m imes 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;
}
原文地址:https://www.cnblogs.com/poi-bolg-poi/p/11488213.html