題目參考北大onlie judge 1001題,由於不知道對於整數的相關輸入要求,如果輸入整數進入高精度冪的運算的話,預設為6.0000 or 12.000 格式。
/*對乙個實數r( 0.0 < r < 99.999 ),要求寫程式精確計算 r 的 n 次方(rn),其中n 是整數並且 0 < n <= 25。(限時0.5s)
*高精度冪的計算
*/ #include
#include
#include /*malloc automatic distribute */
#define len 11 /*考慮到換行符的影響 */
#define float_len 6
#define power_len 2
#define max_len 250 /*計算結果最大占用長度 */
/* 採用 鍊錶,少占用記憶體 */
typedef struct data
data,*data_p;
#define size (sizeof(data))
char global_outcome[max_len]; /*用於存放每乙個結構體運算的結果() */
int global_count; /*用於定位global_outcome在執行加和時最遠點(為了reverse考慮)*/
int find_dot(char *);/*小數點index尋找函式 */
void release_stack(data_p); /*空間釋放函式 */
void per_outcome_print(int,int,int);/*列印每一組資料運算的結果*/
void calculate(data_p); /*計算函式*/
void reverse(); /*調整global_outcome的字元順序(一次計算過後,數值是反序儲存的)*/
void add_help(char *,int); /* 輔助計算加和函式 */
int main(void)
strncpy(head->power,temp+float_len+1,power_len);
*((head->power)+power_len)='\0';
head->next=(data_p)malloc(size);
head=head->next;
head->next=null; /*初始化為空指標 */
}free(temp);/*釋放臨時儲存字元陣列 */
free(head);/*釋放多餘的乙個結構體 */
int i;
head=first;
for(i=0;i
release_stack(first);
return 0;
}void calculate(data_p point)
if(mode_up>0)
*(swap+t)=mode_up+'0';
add_help(swap,position++);
memset(swap,0,max_len*sizeof(char));}}
free(swap);
per_outcome_print(point->index_dot,cycle_number+1,point->extra_zero);
memset(swap_copy,0,max_len*sizeof(char));
}void add_help(char *swap,int position)
if(mode_up>0)
*(global_outcome+(i++)+position)=mode_up+'0';
global_count=i-1+position; /*index標準索引標值 */
}int find_dot(char *object)/*尋找float資料的小數點所在index */
void per_outcome_print(int index_dot,int power,int extra_zero) /*列印結果(處理0.情況) */
}else
putchar('\n');
} void release_stack(data_p first) /*釋放所有動態分配的空間 */
}void reverse() /*global_outcome運算結果的正序化(最後一次計算直接反序輸出) */
}
高精度冪的計算
include include include using namespace std int s void chen char a,char b a a b 高精度乘法 l strlen a strlen b for i strlen b 1 i 0 i for j strlen a 1,k i ...
高精度 高精度冪
時間限制 1 sec 記憶體限制 64 mb 題目描述 經過測試,修羅王發現開啟魔法手銬的方法是需要求乙個正整數a 1輸入 包含兩個數字,即a和n。輸出輸出結果的最後1000位。複製樣例資料 2 10樣例輸出 1024注意c陣列不能只取1000為萬一第1000為為0不就捨掉了,到最後在輸出1000位...
快速冪 高精度求冪
本文講述快速冪的原理,以及用法 定義 快速求,取base為底數的exp次冪,即求 baseexp 時間複雜度 o log n 思想 每一步都把指數分成兩半,而相應的底數做平方運算。不僅能把非常大的指數給不斷變小,所需要執行的迴圈次數也變小,而最後表示的結果卻一直不會變。原理 a b m a m b ...