zoukankan      html  css  js  c++  java
  • 【CodeForces 697B】Barnicle

    对科学计数法表示的数,输出其10进制的形式。

    c++来做,需要考虑这些细节:

    当b==0,d==0时,只输出a。

    当不需要补零的情况有两种:

    一种是刚好是整数,只输出a(注意1.0e1的情况是输出1);另一种是还要输出剩下的小数部分。

    #include<cstdio>
    #include<algorithm>
    #define N 200005
    using namespace std;
    int a,b,dl,dr;
    char s[N];
    int main(){
        scanf("%s",s);
        printf("%c",s[0]);
        dl=2;
        int d=0;
        for(dr=dl;s[dr]!='e';dr++)//dr为e的位置
            if(s[dr]!='0'&&s[dr]!='e')d=1;//d不为0
        for(int i=dr+1;s[i];i++)
            b=b*10+s[i]-'0';
        if(b==0){
            if(d){
                printf(".");
                for(int i=dl;i<dr;i++)
                    printf("%c",s[i]);
            }
        }else {
            for(int i=dl;i<min(dl+b,dr);i++)
                printf("%c",s[i]);
            if(dl+b>=dr)
                for(int i=1;i<=b-(dr-dl);i++)
                    printf("0");
            else if(d){
                    printf(".");
                    for(int i=dl+b;i<dr;i++)
                        printf("%c",s[i]);
                }
        }
    }

    JAVA和python则可以很轻松地解决(粘一发别人的代码):

    //python
    from decimal import *
    
    a=input()
    b=Decimal(a)
    
    if(round(b)==b):
        print ("%d"%b)
    else:
        print (b)
      
  • 相关阅读:
    OC
    OC
    核心动画
    核心动画
    核心动画
    数据存储1
    plsql语句基础
    Oracle3连接&子查询&联合查询&分析函数
    oracle2约束添加&表复制&拼接
    Oracle表空间创建及表创建
  • 原文地址:https://www.cnblogs.com/flipped/p/5734894.html
Copyright © 2011-2022 走看看