URAL 1823. Ideal Gas(数学啊 )

题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1823


1823. Ideal Gas

Time limit: 0.5 second
Memory limit: 64 MB
Many of you know the universal method of solving simple physics problems: you have to find in a textbook an identity in which you know the values of all the quantities except for one, substitute the numbers into this identity, and calculate the unknown quantity.
This problem is even easier. You know right away that the identity needed for its solution is the Clapeyron–Mendeleev equation for the state of an ideal gas. This equation relates the pressure of an ideal gas  p, the amount of substance  n, the volume occupied by the gas  V, and the temperature  T. Given three of these quantities, you have to find the fourth quantity. Note that the temperature of a gas and the volume occupied by it must always be positive.

Input

Each of the three input lines has the form “X = value”, where  X is the symbol for a physical quantity and  value is a nonnegative integer not exceeding 1000. The three lines specify the values of three different quantities. Pressure is specified in pascals, amount of substance in moles, volume in cubic meters, and temperature in kelvins. It is guaranteed that the temperature and volume are positive. The universal gas constant  R should be taken equal to 8.314 J / (mol · K).

Output

If the input data are inconsistent, output the only line “error”. If the value of  X can be determined uniquely, output it in the format “X = value” with an accuracy of 10 −3. If it is impossible to uniquely determine the value of  X, output the only line “undefined”.

Sample

input output
p = 1
n = 1
V = 1
T = 0.120279

Notes

Recall that Pa = N / m 2 and J = N · m.

PS:

p*V = n*R*T;

代码例如以下:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const double R = 8.314;
double PP, VV, NN, TT;
void findd(char a, double b)
{
    if(a == 'p')
    {
        PP = b;
    }
    else if(a == 'V')
    {
        VV = b;
    }
    else if(a == 'n')
    {
        NN = b;
    }
    else if(a == 'T')
    {
        TT = b;
    }
}
int main()
{

    char a;
    double b;
    while(~scanf("%c = %lf",&a, &b))
    {
        getchar();
        PP = VV = NN = TT = -1;
        findd(a,b);
        scanf("%c = %lf",&a, &b);
        getchar();
        findd(a,b);
        scanf("%c = %lf",&a, &b);
        getchar();
        findd(a,b);
        if(NN < 0)
        {
            printf("n = %lf\n",(PP*VV)/(R*TT));
        }
        else if(PP < 0)
        {
            printf("p = %lf\n",(NN*R*TT)/(VV));
        }
        else if(TT < 0 || VV < 0)
        {
            if(NN==0 && PP==0)
            {
                printf("undefined\n");
            }
            else if(NN==0 || PP==0)
            {
                printf("error\n");
            }
            else if(TT < 0)
            {
                printf("T = %lf\n",(PP*VV)/(NN*R));
            }
            else if(VV < 0)
            {
                printf("V = %lf\n",(NN*R*TT)/(PP));
            }
        }
    }
    return 0;
}


转载于:https://www.cnblogs.com/wzjhoutai/p/7017001.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值