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

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. python_14_生成器

    什么是生成器? -- 动态的生成有规律的列表和元组,查询多少才会生成多少数据,不需要时数据不存在 - 大到10几万数据,就省空间了 什么是列表生成式? -- [ handle_i_result for ...

  2. 在Tomcat中配置单点登录

    单点登录:Single Sign-On .概述 一旦你设置了realm和验证的方法,你就需要进行实际的用户登录处理.一般说来,对用户而言登录系统是一件很麻烦的事情,你必须尽量减少用户登录验证的次数.作 ...

  3. linux之cut命令简单用法

    语法 cut [-bn] [file] cut [-c] [file] cut [-df] [file] 使用说明: cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准输出 ...

  4. C#使用Redis

    一,引入dll 1.ServiceStack.Common.dll 2.ServiceStack.Interfaces.dll 3.ServiceStack.Redis.dll 4.ServiceSt ...

  5. weighted_cross_entropy_with_logits

    weighted_cross_entropy_with_logits 原创文章,请勿转载!!! weighted_cross_entropy_with_logits(targets, logits, ...

  6. MonogoDB 练习一

    1.解析文件,仅处理 FIELDS 字典中作为键的字段,并返回清理后的值字典列表 需求: 1.根据 FIELDS 字典中的映射更改字典的键 2.删掉"rdf-schema#label&quo ...

  7. java之拦截器Interceptor

    1,拦截器的概念    java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了 ...

  8. 获取sap登陆用户名的中文描述

    一.业务场景: 当通过MKPF-USNAM查找ADRP-NAME_LAST时,中间缺少一个表,即USR21.否则,MKPF-USNAM不能和ADRP-PERSNUMBER直接对等. 二.解决方法: D ...

  9. CentOS 7.1静默安装11.2.0.3 64位单机数据库软件

    第1章 CentOS 7.1静默安装11.2.0.3 64位单机数据库软件 1.1  安装前的准备工作 1.1.1      软件准备 1.1.2      检查硬件 注意这里的内存应该满足要求,不然 ...

  10. Base-64编码介绍

    Base-64编码保证了二进制数据的安全 Base-64编码可以将任意一组字节转换为较长的常见文本字符序列,从而可以合法地作为首部字段值.Base-64编码将用户输入或二进制数据,打包成一种安全格式, ...