- 高精度問題,對于初學者來說顯得十分不友好,當初的我也是十分頭疼,現(xiàn)在回過頭來看一些問題,發(fā)現(xiàn)自己也開始有自己的思維去思考這類問題;
- 這是一個簡單題 -- 不是我說的,別人定義的是入門;
- 詳情請看 -- 點我就知道
- 下面是我的個人解答:勉強AC
- 大概思路:
- 首先看題目所給問題的范圍,范圍太大,按照常規(guī)方法先計算出次冪再求解難度很大--本題不知道能不能行,沒測試過;
- 考慮我們的乘法計算規(guī)則--從低位到高位,向前進位;
- 利用這個特點,題目要求的是后三位,剛好我們可以省略掉高位數(shù)據(jù)的保留;
- 實現(xiàn):
ans -= ans/1000*1000;
- 這一步的前提是前面我們申請的數(shù)據(jù)類型是整型;
- 循環(huán)完成“后三位的階乘”
#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<
當前題目:一個關(guān)于高精度的小技巧
標題URL:
http://weahome.cn/article/dsogosg.html