我用的就是数学方法
首先可以判定1000003是质数
当N是1000003的倍数时必然为0;
否则,N必然与1000003互质,
所以可以用费马小定理得
n^1000002 mod 1000003=1
又根据引理
n^a mod p=1
n^b mod p=x
可得(n^a * n^b) mod p =n^(a+b) mod p=x
故n^n^n mod 1000003=n^(n^n mod 1000002) mod 1000003
此时n的指数已经降到 10^6 以下了。
在程序中,我还用了另一算法
n*m mod a=((n mod a )*m) mod a
这样始终保持数字在longint范围内