exgcd TLE最后一个点
查看原帖
exgcd TLE最后一个点
629377
iamajcer楼主2025/2/7 13:57

574ms,求大佬帮忙看看还能怎么快一点。

#include <bits/stdc++.h>
using namespace std;
inline int read(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
   return s*w;
}
inline void write(int x){
    if(x==0){putchar('0');return;}
	int len=0,k1=x,c[10005];
	if(k1<0)k1=-k1,putchar('-');
	while(k1)c[len++]=k1%10+'0',k1/=10;
	while(len--)putchar(c[len]);
}

int n, p;
void exgcd(int a, int b, int &x, int &y)
{
	if (b==0)
	{
		x=1, y=0;
		return ;
	}
	int q=a/b, r=a%b;
	exgcd(b, r, y, x);
	y-=q*x;
}
int main()
{
	n=read(), p=read();
	for (int i=1; i<=n; i++)
	{
		int x=0, y=0;
		exgcd(i, p, x, y);
		
		write((x%p+p)%p), putchar('\n');
	}
	return 0;
}
2025/2/7 13:57
加载中...