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;
}
posted @ 2019-04-08 00:09  AlphaWA  阅读(200)  评论(0编辑  收藏  举报