UVa 537 人工智能

2014-11-24 08:35:46 · 作者: · 浏览: 0

/*

* 解题思路:

* 题意比较好理解,就是给出P = U*I 中的两个量求第三个量、 纯靠细心!

* 容易错的点、就每组数据还要再多输出一个空行、最后一组也要!( ps: 如果发现自己WA、多拿几组数据测下看哪里出错、情况就那么几种、试下就行了!)

*/

#include 
  
   
#include 
   
     int main( ) { int t; int i,j; int total,flag,p,q; int len[ 5 ],r[ 5 ] ,y[ 5 ],vis[ 5 ]; double sum[ 5 ],x[ 5 ]; char c; char ss[ 10 ] = { 'P' , 'U' , 'I' , 'M' , 'm','k','A','V','W'}; char sss[ 5 ][ 100 ]; total = 1; scanf("%d",&t); getchar( ); while( t-- ) { flag = vis[ 0 ] = vis[ 1 ] = 1; p = q = r[ 0 ] = r[ 1 ] = 0; memset( sss , '\0' , sizeof( sss ) ); while( ( c = getchar( ) ) !='\n' ) { if( c == '=' ) flag = 0; else if( !flag && (c == 'W' || c == 'V' || c =='A' ) ) { sss[ q ][ p++ ] = c; flag = 1; len[ q++ ] = p; p = 0; } else if( !flag ) { if( c == '.') { vis[ q ] = 0; r[ q ] = p; } sss[ q ][ p++ ] = c; } } i = 0; x[ 0 ] = x[ 1 ] = 1; memset( y,0,sizeof( y ) ); while( i<2 ) { if( sss[ i ][ len[ i ]-2 ] == 'm' ) x[ i ] = 0.001; else if( sss[ i ][ len[ i ] - 2 ] == 'M' ) x[ i ] = 1000000; else if( sss[ i ][ len[ i ] - 2 ] =='k' ) x[ i ] = 1000; if( sss[ i ][ len[ i ]-1 ] =='A' ) y[ i ] = 6; else if( sss[ i ][ len[ i ]-1 ] =='V' ) y[ i ] = 7; else if( sss[ i ][ len[ i ]-1 ] =='W' ) y[ i ] = 8; i++; } p = 0; while( p<2 ) { sum[ p ] = 0; j=10; if( vis[ p ] ) for( i=0; ( sss[ p ][ i ]<='9' && sss[ p ][ i ] >='0' ) ;i++ ) sum[ p ] = sum[ p ]*j + (sss[ p ][ i ]-'0'); else { for( i=0,j=10;i < r[ p ] ;i++ ) sum[ p ] = sum[ p ] * j +( sss[ p ][ i ] - '0' ); for( i=r[p]+1; ( sss[ p ][ i ]<='9' && sss[ p ][ i ] >='0' );i++,j*=10 ) sum[ p ] = sum[ p ] + (sss[ p ][ i ]-'0')*1.0/j; } sum[ p ] = sum[ p ] * x[ p ]; p++; } printf("Problem #%d\n",total++ ); if(( y[ 0 ] == 6 && y[ 1 ] == 7 ) || (y[ 0 ] == 7 && y[ 1 ] == 6) ) printf("P=%.2lfW\n", sum[ 0 ] *sum[ 1 ] ); else if( y[ 0 ] == 6 && y[ 1 ] == 8 ) printf("U=%.2lfV\n",sum[ 1 ]/sum[ 0 ] ); else if( y[ 0 ] == 7 && y[ 1 ] == 8) printf("I=%.2lfA\n",sum[ 1 ]/sum[ 0 ] ); else if( y[ 0 ] == 8 && y[ 1 ] ==6 ) printf("U=%.2lfV\n",sum[ 0 ]/sum[ 1 ] ); else if( y[ 0 ] == 8 && y[ 1 ] == 7 ) printf("I=%.2lfA\n",sum[ 0 ]/sum[ 1 ] ); puts(""); } return 0; }