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;
}