p1246.cpp
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· C++ 代码 · 共 78 行
CPP
78 行
#define DEBUG
#include <iostream>
#ifdef DEBUG
#include <fstream>
#endif
using namespace std;
#ifdef DEBUG
ifstream in ( "p.in" );
ofstream out ( "p.out" );
#else
istream & in = cin;
ostream & out = cout;
#endif
char data [20];
int contain [17];
int Num [16] [17];
void Work ()
{
memset ( Num , 0 , sizeof ( Num ) );
int dep = 1 , *p , i , w;
contain [1] = 1;
in >> data;
while ( dep ) {
in >> data;
if ( strcmp ( data , "LOOP" ) == 0 ) {
in >> data;
if ( data [0] == 'n' ) contain [++ dep] = -1; else contain [++dep] = atol ( data );
memset ( Num [dep] , 0 , sizeof ( Num [dep] ));
} else
if ( strcmp ( data , "OP" ) == 0 ) {
in >> data;
Num [dep] [0] += atol ( data );
} else {
p = &Num [dep - 1] [0];
if ( contain [dep] < 0 ) { w = 1; p ++; }
else w = contain [dep];
for ( i = 0; i < 16; i ++ )
*( p ++ ) += Num [dep] [i] * w;
dep --;
}
}
}
void Print ()
{
int i , first = 1;
out << "Runtime = ";
for ( i = 15; i >= 0; i -- ) if ( Num [0] [i] ) {
if ( first ) first = 0; else out << '+';
if ( !i ) out << Num [0] [i];
if ( i && Num [0] [i] > 1 ) out << Num [0] [i] << '*';
if ( i ) out << 'n';
if ( i > 1 ) out << '^' << i;
}
if ( first ) out << '0';
out << endl;
}
main ()
{
int total , step = 1;
for ( in >> total; step <= total; step ++ ) {
out << "Program #" << step << endl;
Work ();
Print ();
out << endl;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?