首页 > 试题广场 >

特殊的科学计数法

[编程题]特殊的科学计数法
  • 热度指数:4959 时间限制: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 <stdio.h>
#include<string.h>
int main()
{
    char arr[1000000000];
    scanf("%s",arr);
    int a = strlen(arr);
    if(arr[2]-'0'>=5)
    {
        if(arr[1]-'0'==9&&arr[0]-'0'==9)
        printf("%d.0*10^%d",arr[0]-'0'-8,a);
        else if(arr[1]-'0'==9)
        printf("%d.0*10^%d",arr[0]-'0'+1,a-1);
        else
         printf("%d.%d*10^%d",arr[0]-'0',arr[1]-'0'+1,a-1);
    }
    else if(arr[2]-'0'<5)
    {
         printf("%d.%d*10^%d",arr[0]-'0',arr[1]-'0',a-1);
    }  
    return 0;
}
发表于 2025-11-04 17:02:19 回复(0)