double和long long 的精度對比
阿新 • • 發佈:2019-01-24
指數運算
時間限制:600 ms | 記憶體限制:65535 KB 難度:2- 描述
-
寫一個程式實現指數運算 X^N。(1<X<10,0<N<20)
- 輸入
-
輸入包含多行資料
每行資料是兩個整數X N
資料以EOF結束 - 輸出
- 於輸入的每一行輸出X^N的值
- 樣例輸入
-
2 1 3 2
- 樣例輸出
-
2 9
-
看起來好簡單,但是用double不過,long long過
-
double(雙精度浮點型)是計算機使用的一種資料型別。比起單精度浮點數(float),double(雙精度浮點數)使用 64 位(8位元組) 來儲存一個浮點數。 它可以表示十進位制的15或16位有效數字,負值取值範圍為 -1.7976E+308 到 -4.94065645841246544E-324,正值取值範圍為 4.94065645841246544E-324 到 1.797693E+308[1]
-
也就是說double的精度(15或16位)比long long(19位)位要小
-
題目中最大值不超過9^19(=1.350851717672992e+18)正好19位。so,,,,,,
-
目前程式碼在此:
#include<stdio.h> int main() { long long x,n; while(~scanf("%lld%lld",&x,&n)) { long long a=1; for(long long i=1;i<=n;i++) { a=a*x; } printf("%lld\n",a); } }