POJ 1001 高精度指數運算

2021-06-19 23:53:10 字數 1463 閱讀 7151

本來覺得很簡單的題,興沖沖做了,結果各種wrong answer,搞了幾周看到ac真是感慨啊,細節決定成敗。

1.這道題目還是比較簡單的,但是細節還是挺麻煩的,提交了幾次才通過。

2.思路:用陣列表示大數,採用最簡單的多次乘法,需要注意的是進製的處理,還有輸出的時候要嚴格符合資料的要求。

一開始,陣列採用了高位在前,低位在後,也就是x[0]儲存高位,x[maxlen]儲存低位的儲存方式,但是這樣處理很繁瑣,

後來,反轉了陣列的儲存,發現計算起來很方便,只需要在輸出的時候注意處理一下就行了。

/**************************************

* author:

* date: 2013.12.17

* result = r^n

* 0.0 < r < 99.999, 0 < n <= 25

**************************************/

#include #define rlen 6

#define maxlen 125

void calcmul(int x, int y);

int main()

state = 0;

for(i = 0; i < 6; ++i)

} for(i = 6; i >= 0; --i)

r[i] = '0';

} state = 0;

// read from stdin of revert num

dotlen = 0;

for(i = rlen - 1, j = 0; i >= 0; --i)

else

dotlen = (rlen - 1 -i) * n;

} // calc

for(i = 0; i < n - 1; ++i)

calcmul(x, y);

// putout

state = 0;

for(i = 0; i < maxlen; ++i)

} if(npos > dotlen)

npos = dotlen;

for(i = maxlen - 1; i >= npos; --i)

if(y[i] > 0 || state == 1)

} printf("\n");

} return 0;

}void calcmul(int x, int y)

} for(i = maxlen - 1; i >= 0; --i)

} // calc

for(i = 0; i < xlen; ++i)

} // carry

for(i = 0; i < maxlen - 1; ++i)

for(i = 0; i < maxlen; ++i)

y[i] = temp[i];

}

POJ 1001 高精度乘法

必須去掉前導0和後導0,乙個特殊資料是對000.00這樣的輸出0 include includeusing namespace std int main while n 2 如果小於2直接輸出 for int i 0 i dianwei i 從左往右去掉0 int lastindex 1 for i...

POJ 1001 高精度乘法

必須去掉前導0和後導0,乙個特殊資料是對000.00這樣的輸出0 include includeusing namespace std int main while n 2 如果小於2直接輸出 for int i 0 i dianwei i 從左往右去掉0 int lastindex 1 for i...

POJ 1001 求高精度冪

題目描述 對數值很大 精度很高的數進行高精度計算是一類十分常見的問題。比如,對國債進行計算就是屬於這類問題。現在要你解決的問題是 對乙個實數r 0.0 r 99.999 要求寫程式精確計算 r 的 n 次方 r n 其中n 是整數並且 0 n 25。解題思路 很簡單的一道高精度題目。話不多說直接上 ...