BUNOJ 1011
字符串处理的题。原题链接
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的更多相关文章
- SCNU 2015ACM新生赛初赛【1001~1011】个人解题思路
题目1001: 大意:已知$n$个角色,$m$种怪物种族,$k$个怪物,给出一组角色编号,编号$P_{i}$的角色能肝死编号$i$的怪物,对于给定的一组怪物编号,为了打通关 ...
- Ural 1011. Conductors
1011. Conductors Time limit: 2.0 secondMemory limit: 64 MB Background Everyone making translations f ...
- poj 1011
http://poj.org/problem?id=1011 这是一道POJ的搜索的题目,最开始确实难以理解,但做过一些搜索的题目后,也没那么难了. 大概题意就是,现在有N根木头,要拼成若干根木头,并 ...
- (状压) Marriage Ceremonies (lightOJ 1011)
http://www.lightoj.com/volume_showproblem.php?problem=1011 You work in a company which organizes mar ...
- DFS(剪枝) POJ 1011 Sticks
题目传送门 /* 题意:若干小木棍,是由多条相同长度的长木棍分割而成,问最小的原来长木棍的长度: DFS剪枝:剪枝搜索的好题!TLE好几次,终于剪枝完全! 剪枝主要在4和5:4 相同长度的木棍不再搜索 ...
- HDU 1011 (树形DP+背包)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1011 题目大意:树上取点,先取父亲,再取儿子.每个点,权为w,花费为cost,给定m消费总额,求最大 ...
- 1011 最大公约数GCD
1011 最大公约数GCD 基准时间限制:1 秒 空间限制:131072 KB 输入2个正整数A,B,求A与B的最大公约数. Input 2个数A,B,中间用空格隔开.(1<= A,B < ...
- PAT乙级 1011. A+B和C (15)
1011. A+B和C (15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 给定区间[-231, 231 ...
- 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 ...
随机推荐
- linux_初始参数选择
目前linux发行版? linux内核 : Linux Kernel2.2 2.4 2.6 3.x 发行版本: Red Hat 主流 6.x, 正在发展 7.x Fedora: 为Red Hat ...
- JS正则表达式的基础用法
RegExp(正则表达式)对象 正则表达式是一个描述字符模式的对象,可以处理更复杂的字符串.进行匹配替换. 常用的修饰符: i/m/g 使用方法: [声明方法一: new RegExp(value)] ...
- Log4j扩展使用--日志格式化器Layout
Layout:格式化输出日志信息 OK,前面我已经知道了.Appender必须使用一个与之相关联的Layout,这样才能知道怎样格式化输出日志信息. 日志格式化器Layout负责格式化日志信息,方法l ...
- discuz数据库相关表
discuz 数据表对照cdb_access 用户权限表 cdb_adminactions 管理动作表cdb_admingroups ...
- JDK自带的Timer类
Timer类负责设定TimerTask的起始和间隔执行时间.具体的执行任务,由用户创建一个TimerTask的继承类,并实现其run()方法 timer.schedule()
- java ecplise配置
运行java项目首先配置java运行时环境:Window->Preferences->Java->Installed JREs 修改为jdk:C:\Program Files\Jav ...
- 【转】 C++易混知识点2. 函数指针和指针函数的区别
我们时常在C++开发中用到指针,指针的好处是开销很小,可以很方便的用来实现想要的功能,当然,这里也要涉及到指针的一些基本概念.指针不是基本数据类型,我们可以理解他为一种特殊类型的对象,他占据一定空间, ...
- MySQL数据库中实现对中文字段按照首字字母排序
转载自网络! 1. 在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在MySQL的很多版本中都存在. 如果这个问题不解决, ...
- [DeeplearningAI笔记]ML strategy_1_3可避免误差与改善模型方法
机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.8 为什么是人的表现 今天,机器学习算法可以与人类水平的表现性能竞争,因为它们在很多应用程序中更有生产 ...
- nongsanli
之后的内容只能追加,不可以修改,删除. 1. mysql可以对字段进行MD5加密, 加密插入:INSERT INTO t_user(id,username,PASSWORD) VALUES('5 ...