輸入n,牛牛想知道0.5的n次方的精確值。
注意是精確值,也就是小數有多少位,就要輸出多少位,不四捨五入。(當然也不輸出多餘的0)
對於100%的數據,1 <= n <= 1000
對於60%的數據,1 <= n <= 27
對於30%的數據,1 <= n <= 4
sprintf指的是字符串格式化命令,主要功能是把格式化的數據寫入某個字符串中。sprintf 是個變參函數。使用sprintf 對於寫入buffer的字符數是沒有限制的,這就存在了buffer溢出的可能性。解決這個問題,可以考慮使用 snprintf函數,該函數可對寫入字符數做出限制。 [
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
char s[maxn];
int main() {
int n;
cin >> n;
sprintf(s, "%.100000lf", pow(0.5, n));
for (int i = 100000; i >= 0; i--) {
if (s[i] != '0') {
for (int j = 0; j <= i; j++)printf("%c",s[j]);
break;
}
}
return 0;
}