1_998244353:
由于\(998244353\)是十分常见的模数,所以可以猜想到取模。
\(1,19,361....\)是\(19^x\)。
前两个点可以直接用快速幂计算。
第三个点由于数比较大,所以使用euler定理,把幂次模\(998244352\)后快速幂。

namespace s1{
	int mo=998244353;
	int qp(int x,int y){
		int r=1;
		for(;y;y>>=1,x=x*x%mo)
			if(y&1)
				r=r*x%mo;
		return r;
	}
	int rd(){
		char c=getchar();
		int x=0;
		while(!isdigit(c))
			c=getchar();
		while(isdigit(c)){
			x=(x*10%(mo-1)+c-'0')%(mo-1);
			c=getchar();
		}
		return x;
	}
	void main(){
		int T;
		scanf("%lld",&T);
		while(T--){
			int x=rd();
			printf("%lld\n",qp(19,x));
		}
	}
};

1_?:
发现前3个数是\(1,19,361\),而且是联考年份的尾数,所以考虑快速幂。
由于取模的性质,所以每个数都会小于模数,可以从答案文件最大数开始暴力从小到大枚举。
在验证时只需要验证第一个数即可。
发现是\(1145141\)

namespace s2{
	int mo=1145141;
	int qp(int x,int y){
		int r=1;
		for(;y;y>>=1,x=x*x%mo)
			if(y&1)
				r=r*x%mo;
		return r;
	}
	int rd(){
		char c=getchar();
		int x=0;
		while(!isdigit(c))
			c=getchar();
		while(isdigit(c)){
			x=(x*10%(mo-1)+c-'0')%(mo-1);
			c=getchar();
		}
		return x;
	}
	void main(){
		int T;
		scanf("%lld",&T);
		while(T--){
			int x=rd();
			printf("%lld\n",qp(19,x));
		}
	}
};