85分求调
查看原帖
85分求调
289230
ricky0916楼主2024/4/28 12:19
#include<bits/stdc++.h>
using namespace std;
inline __int128 read(){
	__int128 x=0;
	bool f=0;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-') f^=1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<3)+(x<<1)+ch-'0';
		ch=getchar();
	}
	if(f) return -x;
	return x;
}
void write(__int128 x){
	static int sta[20];
	int top=0;
	if(x<0) putchar('-'),x=-x;
	do{
		sta[top++]=x%10,x/=10;
	}while(x);
	while(top) putchar(sta[--top]+48);
}
void we(__int128 x){
	write(x);
	putchar('\n');
}
void put(string s){
	int len=s.length();
	for(int i=0;i<len;i++){
		putchar(s[i]);
	}
}
inline int mn(int x,int y){
	return x<y?x:y;
}
inline int mx(int x,int y){
	return x>y?x:y;
}
inline void asdf(int &x,int &y){
	x^=y^=x^=y;
}
const __int128 mod=10000000000000000051ull,cs=3e9+200000000;
inline __int128 ksm(__int128 x,__int128 y){
	__int128 ret=1;
	while(y){
		if(y&1) ret=ret*x%mod;
		y>>=1;
		x=x*x%mod;
	}
	return ret;
}
int n,m,c;
__int128 x,y,tx;
int main(){
	n=read();
	m=read();
	c=read();
	x=y=1;
	for(int i=1;i<=n;i++) tx=read(),x=x*tx%mod;
	for(int i=1;i<=m;i++) tx=read(),y=y*tx%mod;
	
	x=x*ksm(y,mod-2)%mod;
	__int128 a=1,b=0;
	
	y=mod;
	while(x>=cs){
		swap(x,y),swap(a,b);
		a-=x/y*b;
		x%=y;
	}
	write(x);
	putchar(' ');
	write(a);
	return 0;
}
2024/4/28 12:19
加载中...