字符串处理的题。原题链接

AC代码:

#include<cstring>
#include<cstdio>
#include<string>
#include<iostream>
#include<cmath>
using namespace std;
double res[3]; //res[0]~U res[1]~I res[2]~P
char unit[]={'V','A','W'};
char name[]={'U','I','P'};
double solve(int *t,int len)
{
    int pos;
    for(int i=0;i<len;++i)
    {
        pos=i;
        if(t[i]==-1) break;
    }
    if(pos==len-1) pos++;
    int len1=pos,len2=len-pos-1;

    double ans=0.00;
    pos=0;
    for(int i=len1-1;i>=0;--i)
        ans+=pow(10.0,i)*t[pos++];
    pos++;
    for(int i=1;i<=len2;++i)
        ans+=pow(0.1,i)*t[pos++];

    return ans;
}
int main()
{
    int T;
    scanf("%d",&T);
    int cnt=0;
    string str;
    while(T--)
    {
        for(int i=0;i<3;++i) res[i]=-1.0;
        getchar();
        getline(cin,str);
        printf("Problem #%d\n",++cnt);
        for(int i=0;i<str.size();++i)
        {
            if(str[i]!='=') continue;
            int j=i+1,len=0;
            int t[20];
            while(str[j]>='0'&&str[j]<='9'||str[j]=='.')
            {
                if(str[j]=='.') t[len++]=-1;
                else t[len++]=str[j]-'0';
                ++j;
            }
            double x=solve(t,len);
            if(str[j]=='m') x*=0.001;
            else if(str[j]=='k') x*=1000;
            else if(str[j]=='M') x*=1000000;

            if(str[i-1]=='U') res[0]=x;
            else if(str[i-1]=='I') res[1]=x;
            else if(str[i-1]=='P') res[2]=x;
        }
        int pos;
        for(int i=0;i<3;++i)
        {
            if(res[i]==-1) pos=i;
        }
        double ans=0.0;
        if(pos==0) ans=res[2]/res[1];
        else if(pos==1) ans=res[2]/res[0];
        else if(pos==2) ans=res[0]*res[1];
        printf("%c=%.2f%c\n\n",name[pos],ans,unit[pos]);
    }
    return 0;
}

如有不当之处欢迎指出!!

BUNOJ 1011的更多相关文章

  1. SCNU 2015ACM新生赛初赛【1001~1011】个人解题思路

            题目1001:       大意:已知$n$个角色,$m$种怪物种族,$k$个怪物,给出一组角色编号,编号$P_{i}$的角色能肝死编号$i$的怪物,对于给定的一组怪物编号,为了打通关 ...

  2. Ural 1011. Conductors

    1011. Conductors Time limit: 2.0 secondMemory limit: 64 MB Background Everyone making translations f ...

  3. poj 1011

    http://poj.org/problem?id=1011 这是一道POJ的搜索的题目,最开始确实难以理解,但做过一些搜索的题目后,也没那么难了. 大概题意就是,现在有N根木头,要拼成若干根木头,并 ...

  4. (状压) Marriage Ceremonies (lightOJ 1011)

    http://www.lightoj.com/volume_showproblem.php?problem=1011 You work in a company which organizes mar ...

  5. DFS(剪枝) POJ 1011 Sticks

    题目传送门 /* 题意:若干小木棍,是由多条相同长度的长木棍分割而成,问最小的原来长木棍的长度: DFS剪枝:剪枝搜索的好题!TLE好几次,终于剪枝完全! 剪枝主要在4和5:4 相同长度的木棍不再搜索 ...

  6. HDU 1011 (树形DP+背包)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1011 题目大意:树上取点,先取父亲,再取儿子.每个点,权为w,花费为cost,给定m消费总额,求最大 ...

  7. 1011 最大公约数GCD

    1011 最大公约数GCD 基准时间限制:1 秒 空间限制:131072 KB 输入2个正整数A,B,求A与B的最大公约数. Input 2个数A,B,中间用空格隔开.(1<= A,B < ...

  8. PAT乙级 1011. A+B和C (15)

    1011. A+B和C (15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 给定区间[-231, 231 ...

  9. 2016年10月26日 星期三 --出埃及记 Exodus 19:10-11

    2016年10月26日 星期三 --出埃及记 Exodus 19:10-11 And the LORD said to Moses, "Go to the people and consec ...

随机推荐

  1. Servlet--HttpServletResponse的2个操作流的方法

    前面已经说过无数多次了,我们的项目都是基于HTTP协议的一次请求,一次响应.实际编码中,我们在处理完逻辑后一般是跳转到一个页面上,或者用输出流返回json字符串.其实跳转到一个页面往往也就是JSP,J ...

  2. 输入和输出--javase中的路径

    就目前为止, javase中经常用到路径来读取一个资源文件的所有情况都已经整理在博客里面了,这里做一个统一的整理: 1,IO流来读取一个文件,比如说new FileInputStream(" ...

  3. android Android SDK Manager遇到的问题

    打开Android SDK Manager 1点击左上角的tools-->options:将Proxy Settings 里的HTTP Proxy Server和HTTP Proxy Port分 ...

  4. atom中开发vue常用插件

    atom: 开发利器,界面友好,配色出色,好用的插件众多. language-vue: 这个是首推,因为它就是为vue而生的呀,支持很多vue里的提示.在空的vue页面敲tem,vue模板的提示就自动 ...

  5. 101490E Charles in Charge

    题目连接 http://codeforces.com/gym/101490 题目大意 你有一张图,每两点之间有一定距离,计算出比最短路大x%之内的路径中最长边的最小值 分析 先跑一遍最短路,然后二分答 ...

  6. 浅谈ES6

    ECMAScript6.0(简称ES6)是javaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,使得javaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言 ...

  7. spring之构造注入

    第一种:通过构造name和value属性(不常用) <!-- userAction --> <bean id="userAction" class="c ...

  8. xDB and sitecore 8 hardware Recommendations

    xDB and sitecore 8 hardware Recommendations as below: xDB hardware guidelines https://doc.sitecore.n ...

  9. androidstudio canary5一个bug

    Android Studio最新开发版一直跟着升级.到Canary5的时候出了一个bug. app build.gradle添加自己编译的aar库,原本一直使用: compile(name:'ijkp ...

  10. Android开发之漫漫长途 XIV——ListView

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...