- 高精度问题,对于初学者来说显得十分不友好,当初的我也是十分头疼,现在回过头来看一些问题,发现自己也开始有自己的思维去思考这类问题;
- 这是一个简单题 -- 不是我说的,别人定义的是入门;
- 详情请看 -- 点我就知道
- 下面是我的个人解答:勉强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://chengdu.cdxwcx.cn/article/dsogosg.html