一个关于高精度的小技巧

  • 高精度问题,对于初学者来说显得十分不友好,当初的我也是十分头疼,现在回过头来看一些问题,发现自己也开始有自己的思维去思考这类问题;
  • 这是一个简单题 -- 不是我说的,别人定义的是入门;
  • 详情请看 -- 点我就知道
  • 下面是我的个人解答:勉强AC
  • 大概思路:
    • 首先看题目所给问题的范围,范围太大,按照常规方法先计算出次幂再求解难度很大--本题不知道能不能行,没测试过;
    • 考虑我们的乘法计算规则--从低位到高位,向前进位;
    • 利用这个特点,题目要求的是后三位,刚好我们可以省略掉高位数据的保留;
      • 实现:ans -= ans/1000*1000;
      • 这一步的前提是前面我们申请的数据类型是整型;
    • 循环完成“后三位的阶乘”
#include 
#include 
using namespace std;
int main() {
	int a,b,ans = 1;
	cin>>a>>b;
	for(int i = 0; i < b; i++) {
		ans *= a;
		if(ans >= 1000){
			ans -= ans/1000*1000;
		}
	}
	cout<

名称栏目:一个关于高精度的小技巧
文章网址:http://myzitong.com/article/dsogosg.html