首页 > 试题广场 >

特殊的科学计数法

[编程题]特殊的科学计数法
  • 热度指数:10269 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个正整数 N(位数可达 10^5),请将其转写为科学计数法形式,形如:

a.b\times10^c

\hspace{15pt}具体而言,有如下要求:
\hspace{23pt}\bullet\, a[1,9] 之间的整数;
\hspace{23pt}\bullet\, b 为对 N 的第二位数字进行四舍五入后的小数部分(保留一位小数);
\hspace{23pt}\bullet\, c 为整数指数;
\hspace{23pt}\bullet\, 输出格式严格为 ``\text{a.b*10^c}``,无多余空格。

输入描述:
\hspace{15pt}一行输入正整数 N\left(10 ^2\leqq N\leqq10^{100000}\right),不含前导零。


输出描述:
\hspace{15pt}输出 N 的科学计数法表示 ``\text{a.b*10^c}``
示例1

输入

299792458

输出

3.0*10^8
示例2

输入

602214129000000000000000

输出

6.0*10^23
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 0x3f3f3f3f3f3f3f3f;

void solve(){
    string s;cin>>s;
    int cnt=s.length()-1;
    if(s[2]>='5'){
        if(s[1]=='9'){
            s[1]='0';
            if(s[0]=='9'){
                s[0]='1';
                cnt++;
            }
            else s[0]++;
        }
        else s[1]++;
    }
    cout<<s[0]<<"."<<s[1]<<"*10^"<<cnt;
}
signed main(){
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int t=1;
    // cin>>t;
    while(t--){
        solve();
    }return 0;
}

发表于 2026-01-31 05:51:13 回复(0)