求助
  • 板块题目总版
  • 楼主Testla
  • 当前回复14
  • 已保存回复14
  • 发布时间2023/7/1 16:48
  • 上次更新2023/11/3 11:58:10
查看原帖
求助
1028275
Testla楼主2023/7/1 16:48

AT_ttpc2019_i/I hate P


咱现学了快速乘之后试着写了下,超时了,求改

#include <bits/stdc++.h>
#include <string>
using namespace std;
long long ksc(long long x, long long y,long long M) //x*y % M
{
	long long ans = 0;
	while (x) 
	{
		if (x & 1) 
		{
			ans = (ans + y) % M;
		}
		x >>= 1;
		y = (y << 1) % M;
	}
	return ans;
}
long long f(long long I1,long long P1)
{
	while(I1 % P1 == 0)
	{
		I1 = I1 / P1;
	}
	return I1;
}
int main() 
{
	long long Q,P,R,L,tot=1;
	cin >> P >> Q >> L >> R;
	for(long long i = L;i <= R;i++)
	{
		tot  =  ksc(tot,f(i,P),Q);
	}
	cout << tot;
}
2023/7/1 16:48
加载中...