P6159 [Cnoi2020]光图

P6159 [Cnoi2020]光图

传送门

思路:有趣的数学题,在圆内反射,显然反射后的点关于直径对称,所以成倍数递增,举个例子: A 0 → A 5 A_0\rightarrow A_5 A0A5,显然 A 0 A_0 A0 A 5 A_5 A5为直径的线段的点是 A 10 A_{10} A10
因为 A 10 − A 5 = A 5 − A 0 A_{10}-A_5=A_5-A_0 A10A5=A5A0,综上可推出倍数关系,然后在圆内不断取模即可。

#include
using namespace std;
typedef long long ll;
const int N=1e5+5;
#define mst(a) memset(a,0,sizeof a)
int main(){
	int n,p,k;
	scanf("%d%d%d",&n,&p,&k);
	printf("%lld\n",1LL*p*k%n);
	return 0; 
} 

你可能感兴趣的:(数论)