题解:UVA545 Heads
dyq_QWQ
·
·
题解
题意:按一定格式输出 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
}
```