説明タイトルのみ文字が与えられ、進数の0〜35の何の説明は、35から0ではありません。
2つの16進数がこの範囲内にある、と私は範囲の半分を必要としているとは思わなかったことを認めました。また、計算過程で簡単に留意すべきで、長い長い爆破と判断されました。
#include <ビット/ STDC ++。H> に#define LL長いロング 使用して 名前空間はstdを、 int型のミナ、MINB。 文字列A、B; マップ < CHAR、INT > 融点; LL FUNC(LL X) { LL RES = 0 。 以下のために(INT iが= 0 ; B [I]を、私は++ ){ RES * = X; RES + = 融点[B [I]]。 } もし(RES < 0)RES = 1E18。 リターンのres; } int型のmain() { 用(INT I = ' 0 ' ; I <= ' 9 ' ; I ++ ) MP [(CHAR)I] = I- ' 0 ' 。 用(INT I = ' ' ; I <= ' Z ' ; I ++ ) MP [(CHAR)I] = I- ' ' + 10 。 int型のタグ、基数。 CIN >> B >>タグ>> 基数。 // のscanf( "%S%S%D%D"、B、&タグ、&基数)。 もし(タグ== 2 )スワップ(B) LL NA = 0 。 以下のために(INT iが= 0 ; [i]は、I ++ ){ ミナ = MAX(ミナ、MP [I])。 以下のための * = 基数。 na+=mp[a[i]]; } 用(INT iは= 0を I ++; B [I] ) 私は = MAX(MP [Bを[I])。 LL L = MINB + 1、R = 中間、NA。 一方、(L < R){ 半ば =(L + R)>> 1 。 もし(FUNC(ミッド)> = NA) R = 半ば; 他 リットル =ミッド+ 1 ; } もし(FUNC(L)== NA) printf(" %のLLD \ n " 、L)。 他の プット(「インポッシブル」)。 リターン 0 ; }