Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
139845 | 梁乃元 | 国王游戏 | C++ | 内存超限 | 0 | 251 MS | 131156 KB | 1602 | 2024-03-26 13:38:55 |
# include <bits/stdc++.h> # define fs fixed << setprecision # define wt while ( 1 ) # define ld long double # define ll long long # define ctn continue # define brk break # define rt return using namespace std ; struct data { int a , b ; } man [1005] ; string tstr ( int num ) { string ans = "" ; while ( num > 0 ) { ans = char ( num % 10 + '0' ) + ans ; } rt ans ; } bool big ( string x , string y ) { rt ( x . size ( ) == y . size ( ) ? ( x > y ) : x . size ( ) > y . size ( ) ) ; } bool cmp ( data x , data y ) { rt x . a * x . b > y . a * y . b ; } string mul ( string a , int b ) { string ans = "" ; int rem = 0 ; for ( int i = a . size ( ) - 1 ; i >= 0 ; i -- ) { ans = char ( ( rem + ( a [i] - '0' ) * b ) % 10 + '0' ) + ans ; rem = ( rem + ( a [i] - '0' ) * b ) / 10 ; } rt tstr ( rem ) + ans ; } string div ( string a , int b ) { int x = 0 ; string ans = "" ; for ( int i = 0 ; i < a . size ( ) ; i ++ ) { ans += ( ( x * 10 + ( a [i] - '0' ) ) / b ) + '0' ; x = ( x * 10 + ( a [i] - '0' ) ) % b ; } while ( ans [0] == 0 && ans . size ( ) > 0 ) { ans . erase ( 0 , 1 ) ; } rt ans ; } int main ( ) { int n ; cin >> n ; for ( int i = 1 ; i < n ; i ++ ) { cin >> man [i] . a >> man [i] . b ; } sort ( man + 1 , man + n + 1 , cmp ) ; string ans = "0" ; string am = tstr ( man [1] . a ) ; for ( int i = 1 ; i <= n ; i ++ ) { string tmp = div ( am , man [i] . b ) ; ans = big ( ans , tmp ) ? ans : tmp ; am = mul ( am , man [i] . a ) ; } cout << ans << endl ; rt 0 ; }