• Codeforces 691C Exponential notation


    模拟。

    #pragma comment(linker, "/STACK:1024000000,1024000000")
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<cstdlib>
    #include<algorithm>
    #include<vector>
    #include<map>
    #include<set>
    #include<queue>
    #include<stack>
    #include<iostream>
    using namespace std;
    typedef long long LL;
    const double pi = acos(-1.0), eps = 1e-8;
    void File()
    {
        freopen("D:\in.txt", "r", stdin);
        freopen("D:\out.txt", "w", stdout);
    }
    inline int read()
    {
        char c = getchar();  while (!isdigit(c)) c = getchar();
        int x = 0;
        while (isdigit(c)) { x = x * 10 + c - '0'; c = getchar(); }
        return x;
    }
    
    const int maxn=1000100;
    char s[maxn],t[maxn];
    
    void f()
    {
        bool x=0;
        int len=strlen(s); for(int i=0;i<len;i++) if(s[i]=='.') x=1;
        if(x==0) s[len]='.', s[len+1]='0';
        else
        {
            if(s[len-1]=='.') s[len]='0';
            else if(s[0]=='.') { for(int i=len;i>=1;i--) s[i]=s[i-1]; s[0]='0'; }
        }
    }
    
    void g()
    {
        int sz=0; strcpy(t,s); memset(s,0,sizeof s);
        int x; for(int i=0;t[i];i++) if(t[i]=='.') x=i;
        int pos=x-1; for(int i=0;i<x-1;i++) if(t[i]!='0'){ pos=i; break; }
        for(int i=pos;i<=x;i++) s[sz++]=t[i];
        int len=strlen(t); pos=x+1; for(int i=len-1;i>=pos;i--) if(t[i]!='0'){ pos=i; break; }
        for(int i=x+1;i<=pos;i++) s[sz++]=t[i];
    }
    
    void out()
    {
        int x; for(int i=0;s[i];i++) if(s[i]=='.') x=i;
        int len=strlen(s);
        if(x==1&&s[0]=='0')
        {
            int pos=-1; for(int i=2;i<len;i++) if(s[i]!='0') { pos=i; break; }
            if(pos==-1) printf("0
    ");
            else
            {
                if(pos==len-1) printf("%cE%d",s[pos],1-pos);
                else
                {
                    printf("%c.",s[pos]); for(int i=pos+1;i<len;i++) printf("%c",s[i]);
                    printf("E%d
    ",1-pos);
                }
            }
        }
        else if(x==1&&s[0]!='0')
        {
            if(s[len-1]=='0') printf("%c
    ",s[0]);
            else printf("%s
    ",s);
        }
        else if(x!=1)
        {
            int pos=-1; for(int i=len-1;i>=1;i--) if(s[i]!='0'&&s[i]!='.') {pos=i; break;}
            if(pos==-1) printf("%cE%d
    ",s[0],x-1);
            else
            {
                printf("%c.",s[0]); for(int i=1;i<=pos;i++) if(s[i]!='.') printf("%c",s[i]);
                printf("E%d
    ",x-1);
            }
        }
    }
    
    int main()
    {
        memset(s,0,sizeof s); scanf("%s",s);
        f(); g(); out();
        return 0;
    }
  • 相关阅读:
    001-Java®语言规范、Java平台标准版文档、JVM概述
    004-RIP、OSPF【路由选择协议】
    003-ARP地址解析协议
    0405-服务注册与发现-客户端负载均衡-Ribbon 同Eureka使用,Ribbon脱离Eureka使用
    0404-服务注册与发现-客户端负载均衡-两种自定义方式-Ribbon通过代码自定义配置、使用配置文件自定义Ribbon Client
    网页嵌入swf代码
    解决html5 video不能播放 能播放声音不能播放视频
    代码高亮插件SyntaxHighlighter
    透明度
    web图片轮播实现
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5706582.html
Copyright © 2020-2023  润新知