题解:UVA545 Heads

· · 题解

题意:按一定格式输出 2-n 次方。

按格式输出: + 1 计算指数部分:$e = \lfloor -n \cdot \log_{10}(2)\rfloor$(代码对应:``` int e = floor(-n * log10(2))```)。 + 2 计算尾数部分:$a=10^{-n \cdot \log_{10}(2) - e}$(代码对应:```pow(10, -n * log10(2) - e)```)。 ```cpp #include <iostream> #include <cstring> #include <iomanip> #include <cmath> #include <vector> // #pragma GCC optimize(3) #define un unsigned #define int long long int #define flt long double #define lt vector<int> #define gcd(a, b) b ? gcd(b, a % b) : a #define llt __int128 #define QAQ ios::sync_with_stdio(false), ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr) #define endl '\n' #define clr(arr, val) memset(arr, val, sizeof(arr)) #define For(i, l, r) for (int i = l, END##i = r; i <= END##i; ++i) #define Rof(i, r, l) for (int i = r, END##i = l; i >= END##i; --i) #define get() getchar() #define put(c) putchar(c) #define QwQ return 0; #define TwT int32_t #define pb push_back #define ps(a) push(a) #define Hray using #define AK namespace #define IOI std Hray AK IOI; int n, t; TwT main() { QAQ; cin >> t; while (t--) { cin >> n; int e = floor(-n * log10(2)); // 计算 cout << "2^-" << n << " = " << fixed << setprecision(3) << pow(10, -n * log10(2) - e) << "E" << e << endl; //按格式输出 } QwQ } ```