题目大意:输入一个字符串,根据物理公式P=U*I,已知其中两个量,求第三个量,结果保留两位小数。

  Artificial Intelligence? 

Physics teachers in high school often think that problems given as text are more demanding than pure computations. After all, the pupils have to read and understand the problem first!

So they don't state a problem like ``U=10V, I=5A, P=?" but rather like ``You have an electrical circuit that contains a battery with a voltage of U=10V and a light-bulb. There's an electrical current of I=5A through the bulb. Which power is generated in the bulb?".

However, half of the pupils just don't pay attention to the text anyway. They just extract from the text what is given: U=10V, I=5A. Then they think: ``Which formulae do I know? Ah yes, P=U*I. Therefore P=10V*5A=500W. Finished."

OK, this doesn't always work, so these pupils are usually not the top scorers in physics tests. But at least this simple algorithm is usually good enough to pass the class. (Sad but true.)

Today we will check if a computer can pass a high school physics test. We will concentrate on the P-U-I type problems first. That means, problems in which two of power, voltage and current are given and the third is wanted.

Your job is to write a program that reads such a text problem and solves it according to the simple algorithm given above.

Input

The first line of the input file will contain the number of test cases.

Each test case will consist of one line containing exactly two data fields and some additional arbitrary words. A data field will be of the form I=xAU=xV or P=xW, where x is a real number.

Directly before the unit (AV or W) one of the prefixes m (milli), k (kilo) and M (Mega) may also occur. To summarize it: Data fields adhere to the following grammar:

DataField ::= Concept '=' RealNumber [Prefix] Unit
Concept ::= 'P' | 'U' | 'I'
Prefix ::= 'm' | 'k' | 'M'
Unit ::= 'W' | 'V' | 'A'

Additional assertions:

  • The equal sign (`=') will never occur in an other context than within a data field.
  • There is no whitespace (tabs,blanks) inside a data field.
  • Either P and UP and I, or U and I will be given.

Output

For each test case, print three lines:

  • a line saying ``Problem #k" where k is the number of the test case
  • a line giving the solution (voltage, power or current, dependent on what was given), written without a prefix and with two decimal places as shown in the sample output
  • a blank line

Sample Input

3
If the voltage is U=200V and the current is I=4.5A, which power is generated?
A light-bulb yields P=100W and the voltage is U=220V. Compute the current, please.
bla bla bla lightning strike I=2A bla bla bla P=2.5MW bla bla voltage?

Sample Output

Problem #1
P=900.00W Problem #2
I=0.45A Problem #3
U=1250000.00V

Miguel A. Revilla 
1999-01-11
 
AC代码:
 //#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; char s[]; struct AI
{
char Concept, Prefix, Unit;
double x;
}a[]; void transform(struct AI &t);
double calculate(char u, struct AI a1, struct AI a2);
char f(char Concept); int main(void)
{
#ifdef LOCAL
freopen("537in.txt", "r", stdin);
#endif
int N, kase = ;
cin >> N;
getchar();
while(N--)
{
int i, len;
++kase;
gets(s);
len = strlen(s);
for(i = ; i < len; ++i)//寻找第一个等号
{
if(s[i] == '=')
break;
}
sscanf(&s[i] - ,"%c=%lf%c", &a[].Concept, &a[].x, &a[].Prefix);
for(++i; i < len; ++i)//寻找第二个等号
{
if(s[i] == '=')
break;
}
sscanf(&s[i] - ,"%c=%lf%c", &a[].Concept, &a[].x, &a[].Prefix);
transform(a[]);
transform(a[]); char u = 'P' + 'U' + 'I' - a[].Concept - a[].Concept;//这是要求的物理量
double res;
res = calculate(u, a[], a[]); cout << "Problem #" << kase << endl;
printf("%c=%.2lf%c\n\n", u, res, f(u));
}
return ;
}
//根据物理量求单位
char f(char Concept)
{
if(Concept == 'P')
return 'W';
if(Concept == 'U')
return 'V';
if(Concept == 'I')
return 'A';
}
//单位换算及转化为国际标准单位
void transform(struct AI &t)
{
if(t.Prefix == 'm')
t.x /= 1000.00;
if(t.Prefix == 'k')
t.x *= 1000.00;
if(t.Prefix == 'M')
t.x *= 1000000.00;
t.Unit = f(t.Concept);
}
//根据公式计算
double calculate(char u, struct AI a1, struct AI a2)
{
if(u == 'P')
return a1.x * a2.x;
if(a1.Concept == 'P')
return a1.x / a2.x;
return a2.x / a1.x;
}

代码君

UVa 537 Artificial Intelligence?的更多相关文章

  1. Artificial intelligence(AI)

    ORM: https://github.com/sunkaixuan/SqlSugar 微软DEMO: https://github.com/Microsoft/BotBuilder 注册KEY:ht ...

  2. (转) Artificial intelligence, revealed

    Artificial intelligence, revealed Yann LeCunJoaquin Quiñonero Candela It's 8:00 am on a Tuesday morn ...

  3. Artificial Intelligence Language

    Artificial Intelligence Language Objective We know, a true AI program should have ability to underst ...

  4. 拼写纠正 Artificial Intelligence: A Modern Approach

    Artificial Intelligence: A Modern Approach http://mindhacks.cn/2008/09/21/the-magical-bayesian-metho ...

  5. Artificial Intelligence Research Methodologies 人工智能研究方法

    Computer Science An Overview _J. Glenn Brookshear _11th Edition To appreciate the field of artificia ...

  6. PAIP: Paradigms of Artificial Intelligence Programming

    PAIP: Paradigms of Artificial Intelligence Programming PAIP: Paradigms of Artificial Intelligence Pr ...

  7. c#-Artificial Intelligence Class

    NET Artificial Intelligence Class http://www.codeproject.com/KB/recipes/aforge_neuro/neuro_src.zip

  8. EECS 649 Introduction to Artificial Intelligence

    EECS 649 Introduction to Artificial IntelligenceExamElectronic Blackboard Submission Due: April 24, ...

  9. (转)A curated list of Artificial Intelligence (AI) courses, books, video lectures and papers

    A curated list of Artificial Intelligence (AI) courses, books, video lectures and papers. Updated 20 ...

随机推荐

  1. 初识layer 快速入门

    http://layer.layui.com/hello.html 如果,你初识layer,你对她不知所措,你甚至不知如何绑定事件… 那或许你应该用秒做单位,去认识她. 开始了解 第一步:部署 下载l ...

  2. Content Providers详解

    今天仔细阅读了一遍Content Providers的官方API文档,总结了一下Android中Content Providers的用法. 各种类型的Content Provider对一个结构化的数据 ...

  3. JavaScript call和apply的用法

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  4. (1)opengl-nehe 4种框架

    http://www.yakergong.net/nehe/ 这个网站还是opengl方面比较权威的,作者叫nehe 这东西估计是要先装个ndk,然后才能运行代码 先睡觉! 以下内容参考自http:/ ...

  5. 利用securecrt在linux与windows之间传输文件

    SecureCRT这款SSH客户端软件同时具备了终端仿真器和文件传输功能.比ftp命令方便多了,而且服务器不用再开FTP服务了.rz,sz是便是Linux/Unix同Windows进行ZModem文件 ...

  6. PHP中global全局变量的使用

    在方法里面想用外面的变量,可以声明这个变量为全局变量. $a=1; $b=2; test_global(); function test_global() { global $a,$b; echo $ ...

  7. photoshopCS4换中文

    有些朋友的安装的时候可能安装界面是全中文的,安装完软件是英文的. 下载这个中文包, http://download.csdn.net/download/tuberose1605/5171091 解压后 ...

  8. 更新SDK后ADT版本低不支持

    在android_sdk_windows/tools/lib下的plugin.prop文件里被变更为 # begin plugin.prop plugin.version=21.1.0 # end p ...

  9. CentOS 7:如何安装防火墙?

    对于纯净版的CentOS 7,您必须手动安装防火墙.但是你就算安装了防火墙还是不能马上运行它,你需要再做一些操作才能让它工作. 在CentOS 7中按照以下步骤来设置防火墙 第一步,通过yum安装sy ...

  10. CentOS7区域设置

    区域设置的配置文件在/etc/locale.conf,通过localectl命令进行设置: systemd服务在启动的时候读取区域配置文件,完成系统的设置. 命令的几个常用方法如下: 1 查看当前配置 ...