输入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;
}