51nod 2382 一半的一半 (sprintf()函數的用法)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章