题目如下:
代码如下:
package huawei;
public final class Demo {
/*
功能: 求解M的N次方的最后三位数(M,N均大于10)
输入参数:
int M:M > 10
int N:N > 10
返回值:
M的N次方的最后三位数
*/
public static int getLast3DigitsOfMN(int M, int N)
{
int result = 1;
for(int i = 0;i < N;++i){
result = (result * (M % 1000)) % 1000;
}
return result;
}
}
当m, n很大时, m的n次方无法用基本的数据类型表示...分析可以发现, 乘积的最后三位只与乘数和被乘数的最后三位有关, 而与高位无关, 所以每次将乘积结果对1000取模即可...
用循环的方式求M的N次方,每次做乘法之后先除以1000取余,不然会造成数据溢出,这个题目就是考这个知识点(数据溢出)。