TLE求助
  • 板块CF17D Notepad
  • 楼主djwj323
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/1/12 09:01
  • 上次更新2023/10/28 12:29:45
查看原帖
TLE求助
212320
djwj323楼主2022/1/12 09:01

#28 TLE

#include<bits/stdc++.h>
using namespace std;
long long b,n,c,ans,m,i,j;
char B[1000002],N[1000002];
bool f;
long long p(long long s)
{
	long long r=s;
	for(j=2;j*j<=s;j++)
	{
		if(s%j==0)
		{
			r=r-r/j;
			while(s%j==0)  s/=j;
		}
	}
	if(s>1)  r=r-r/s;
	return r;
}
long long k(long long x,long long d)
{
	long long o=1;
	for(;d;d/=2,x=(x*x)%c)
	{
		if(d%2==1)  o=(o*x)%c;
	}
	return o;
}
int main()
{
	cin>>B>>N>>c,m=p(c);
	for(i=0;i<strlen(B);i++)  b=(b*10+(B[i]-'0'))%c;
	for(i=strlen(N)-1;i>=0;i--)
	{
		if(N[i]=='0')  N[i]='9';
		else
		{
			N[i]-=1;
			break;
		}
	}
	for(i=0;i<strlen(N);i++)
	{
		n=n*10+N[i]-'0';
		if(n>=m)  f=true;
		n%=m;
	}
	if(f)  n+=m;
    return ans=(((b-1))%c+c)%c,printf("%lld",ans?ans:c),0;
}
2022/1/12 09:01
加载中...