Timus 1823
#include <iostream>
using namespace std;
char c1,c2,c3,c4,blank;
double d1,d2,d3,d4;
bool check(char c) {
if(c1 != c && c2 != c && c3 != c)
return true;
return false;
}
int main() {
double val[300] = { 0.0 }, R = 8.314;
cin>>c1>>blank;
cin>>val[c1];
cin>>c2>>blank;
cin>>val[c2];
cin>>c3>>blank;
cin>>val[c3];
if(check('T')) {
if((val['n'] == 0 && val['p'] != 0) || val['p'] == 0 && val['n'] != 0)
printf("error\n");
else if(val['n'] == 0 && val['p'] == 0)
printf("undefined\n");
/*else if(val['n'] == val['V'])
val['n'] = val['V'] = 1;
else if(val['p'] == val['n'])
val['p'] = val['n'] = 1;*/
else {
val['T'] = (val['p'] * val['V']) / ( val['n'] * R );
printf("T = %lf\n", val['T']);
/*int T = (int)(val['T'] * 10000) % 10;
if( T > 4 )
val['T'] += 0.001;
T = (int)(val['T'] * 1000);
if(T > 0)
printf("T = %lf\n", val['T']);
else
printf("error\n");*/
}
}
if(check('p')) {
if(val['n'] == 0)
//printf("undefined\n"); wa 12
printf("p = 0.0000000000\n");
/*else if(val['T'] == val['V'])
val['T'] = val['V'] = 1;
else if(val['n'] == val['V'])
val['n'] = val['V'] = 1;*/
else {
val['p'] = (val['n'] * R * val['T'] / val['V']);
printf("p = %lf\n", val['p']);
/*int p = (int)(val['p'] * 10000) % 10;
if( p > 4 )
val['p'] += 0.001;
p = (int)(val['p'] * 1000);
if(p > 0)
printf("p = %lf\n", val['p']);
else
printf("error\n");*/
}
}
if(check('n')) {
if(val['p'] == 0)
//printf("undefined\n"); wa 6
printf("n = 0.0000000000\n");
/*else if(val['T'] == val['V'])
val['T'] = val['V'] = 1;
else if(val['p'] == val['T'])
val['p'] = val['T'] = 1;*/
else {
val['n'] = (val['p'] * val['V']) / (val['T'] * R);
printf("n = %lf\n", val['n']);
/*int n = (int)(val['n'] * 10000) % 10;
if( n > 4 )
val['n'] += 0.001;
n = (int)(val['n'] * 1000);
if(n > 0)
printf("n = %lf\n", val['n']);
else
printf("error\n");*/
}
}
if(check('V')) {
if((val['n'] == 0 && val['p'] != 0) || val['p'] == 0 && val['n'] != 0 )
printf("error\n");
else if(val['n'] == 0 && val['p'] == 0) //without this code wa 8
printf("undefined\n");
/*else if(val['T'] == val['p'])
val['T'] = val['p'] = 1;
else if(val['p'] == val['n'])
val['p'] = val['n'] = 1;*/
else {
val['V'] = (val['n'] * R * val['T'] / val['p']);
/*int v = (int)(val['V'] * 10000) % 10;
if( v > 4 )
val['V'] += 0.001;*/
printf("V = %lf\n", val['V']);
//v = (int)(val['V'] * 1000);
//if(v > 0)
// printf("V = %lf\n", val['V']);
//else
// printf("error\n");
}
}
return 0;
}
这题目就是蛋疼蛋疼蛋疼, 要考虑各种参数的配合,这个都算了,竟然在我考虑了进位,计算后结果大小这些情况后反而一直WA,反正这题目是我TIMUS目前WA最多了,60多次。