专栏文章

题解:UVA545 Heads

UVA545题解参与者 1已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@mio1fcyo
此快照首次捕获于
2025/12/02 11:47
3 个月前
此快照最后确认于
2025/12/02 11:47
3 个月前
查看原文
题意:按一定格式输出 22n-n 次方。
2n2⁻ⁿ 可通过对数转换为 1010 的幂次形式:2n=10log10(2n)=10nlog10(2)2^{-n}=10^{\log_{10}(2^{-n})}=10^{-n \cdot \log_{10}(2)}
按格式输出:
  • 1 计算指数部分:e=nlog10(2)e = \lfloor -n \cdot \log_{10}(2)\rfloor(代码对应: int e = floor(-n * log10(2)))。
  • 2 计算尾数部分:a=10nlog10(2)ea=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
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...