求A^B的最后三位数表示的整数,如果A=0, B=0,则表示输入数据的结束。ACM/HDU 可AC
##当A,B很大时,数据会溢出,此时需要找到数学技巧~我是这样想的:
-
1、计算方法为:不断将A^B式子的指数除2,基数平方,原式仍成立
-
2、技巧为: 最后三位数的乘积最多只与三位数的运算有关,故进行以下取数 :
- - - - c_表示奇次幂进位的a,当c_大于1000时,对1000取余数。
- - - - a不断平方、n不断除2
- - - - 当n==1时,计算完毕,得到(至多)三位数的c_与(至多)三位数n的乘积
result
- - - - result对1000取模即为最终结果
#include<stdio.h>
#include<math.h>
/*
计算方法为:不断将指数除2,基数平方
技巧为: 最后三位数的乘积最多只与三位数的运算有关,故进行以下取数
c_表示奇次幂进位的a,大于1000时,对1000取余数
a不断