p1881_模拟.cpp

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· C++ 代码 · 共 57 行

CPP
57
字号
#include <stdio.h>
#include <string.h>

int      Register [10] , Words [1010];

bool     init ();
void     solve ();

main ()
{
     while ( init () ) solve ();
     return 0;
     int total;
     for ( scanf( "%d\n" , &total ); total; total -- ) {
         init ();
         solve ();
         if ( total > 1 ) printf ( "\n" );
     }
}

void solve ()
{
     int   p , step , d , n , s;
     memset ( Register , 0 , sizeof ( Register ));
     for ( step = p = 0; ; step ++ , p ++ ) {
         if ( Words [p] == 100 ) break;
         s = Words [p] / 100 , d = Words [p] % 100 / 10 , n = Words [p] % 10;
         switch ( s ) {
                case 2 : Register [d] = n; break;
                case 3 : Register [d] = ( Register [d] + n ) % 1000; break;
                case 4 : Register [d] = ( Register [d] * n ) % 1000; break;
                case 5 : Register [d] =   Register [n]; break;
                case 6 : Register [d] = ( Register [d] + Register [n] ) % 1000; break;
                case 7 : Register [d] = ( Register [d] * Register [n] ) % 1000; break;
                case 8 : Register [d] = Words [Register [n]]; break;
                case 9 : Words [Register [n]] = Register [d]; break;
                case 0 : if ( Register [n] ) p = Register [d] - 1; break;
         }
//         printf ( "Order = %d %d %d %d\n" , Words [p] , s , d , n );
//         for ( int i = 0; i < 10; i ++ ) printf ( "%4d" , Register [i] ); printf ( "\n" );
     }
     printf ( "%d\n" , step + 1 );
}

bool init ()
{
     memset ( Words , 0 , sizeof ( Words ));
     char Str [100];
     int  N;
     for ( N = 0; gets ( Str ) && Str [0]; N ++ )
         sscanf ( Str , "%d" , &Words [N] );
     return N;
}

// 4392855   2006-03-08 05:29:14  Time Limit Exceeded 10.020 392 35374 C++ 10033 - Interpreter 
// 4392863   2006-03-08 05:34:16  Accepted 0.002 Minimum 35374 C++ 10033 - Interpreter 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?