HDU6440(费马小定理)

其实我读题都懵逼……他给出一个素数p,让你设计一种加和乘的运算使得$$(m+n)^p = mp+np$$
答案是设计成%p意义下的加法和乘法,这样:$$(m+n)^p % p = m+n$$$$mp % p=m$$$$np % p=n$$
所以$$(m+n)p % p=(mp+n^p) % p$$
直接输出就行了。

int T, p;

int main() {
	for (read(T); T; T--) {
		read(p);
		rep(i, 1, p) {
			rep(j, 1, p) {
				printf("%d ", (i + j - 2) % p);
			}
			puts("");	
		}
		rep(i, 1, p) {
			rep(j, 1, p) {
				printf("%lld ", (ll)(i - 1) * (j - 1) % p);
			}
			puts("");
		}
	}
	return 0;
}
原文地址:https://www.cnblogs.com/AlphaWA/p/10668211.html