高精度冪的計算

2021-07-11 06:08:17 字數 2163 閱讀 2657

題目參考北大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 ...