Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- struct bignum
- {
- int x [ 10050 ], l;
- bignum ( int t ) { memset ( x , 0 , sizeof x ); l = 1; }
- bignum ( )
- {
- char s [ 10050 ];
- memset ( x , 0 , sizeof x );
- scanf ( "%s" , &s );
- for ( int i = 0; i < strlen ( s ); i++ )
- x[strlen ( s )-i-1] = s[i] - '0';
- l = strlen ( s );
- }
- void PUTA ( int t )
- {
- for ( int i = 0; i < l; i++ )
- x[i] *= t;
- for ( int i = 0; i < l; i++ )
- {
- x[i+1] += x[i] / 10;
- x[i] %= 10;
- }
- while ( x[l] )
- {
- x[l+1] = x[l] / 10;
- x[l] %= 10;
- l++;
- }
- }
- bignum operator * ( const bignum &t )
- {
- bignum ret = 0;
- for ( int i = 0; i < l; i++ )
- for ( int j = 0; j < t.l; j++ )
- ret.x[i+j] += x[i] * t.x[j];
- ret.l = t.l + l - 1;
- for ( int i = 0; i < ret.l; i++ )
- {
- ret.x[i+1] += ret.x[i] / 10;
- ret.x[i] %= 10;
- }
- while ( ret.x[ret.l] )
- {
- ret.x[ret.l+1] = ret.x[ret.l] / 10;
- ret.x[ret.l] %= 10;
- ret.l++;
- }
- return ret;
- }
- void PRINT()
- {
- for ( int i = l - 1; i >= 0; i-- )
- printf ( "%d" , x[i] );
- printf ( "\n" );
- }
- bool NULA()
- {
- if ( l == 1 && x[0] == 0 )
- return true;
- return false;
- }
- };
- void SOLVE()
- {
- bignum BIG1, BIG2;
- if ( BIG1.NULA() || BIG2.NULA() )
- {
- printf ( "0\n" );
- return;
- }
- BIG1 = BIG1 * BIG2;
- BIG1.PRINT();
- }
- int main()
- {
- int n;
- scanf ( "%d" , &n );
- for ( int i = 0; i < n; i++ )
- SOLVE();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement