16進法で負でない整数を含む文字列を指定します。 番号は0..9A..Fの数字で書かれており(文字は大きいだけです)、行に数字以外の数字がないことが保証されています。 このような数値の10進表記を含む文字列を取得する必要があります。 入力文字列の長さは100,000バイトを超えません。
あらゆる言語でソリューションを書く-最も美しく、最も短く、最も効果的...チューリングマシンのソリューションでは、「スペース、0、1」(新しいものは入力しない)のみを使用することをお勧めします。 -あなたの裁量で)。 Brainfuckでは、入力文字列を入力し、出力を印刷する必要があります。
UPD。 ビルトインまたはライブラリBigNumを使用することはもちろん良いことですが、どういうわけかあまり面白くありません。 それなしでやりましょう!
シードの場合-C#の解決策(美しい、短い、効果的とも呼ばれない):
静的な安全でない文字列Hex2Dec(文字列x){ int l = x.Length; int ll = l + l / 4 + 3; sbyte [] m =新しいsbyte [ll]; int i = l; foreach(xのchar c)m [-i] =(sbyte)(c <'A'?c-'0 ':c-'A' + 10); int lk = ll; while(l> 0){ int k = 0、l1 = 0; while(l> 0){ k =(k << 4)+ m [-l]; m [l] =(sbyte)(k / 10); if(l1 == 0 && k> = 10)l1 = l + 1; k%= 10; } m [-lk] =(sbyte)(k + 48); lはl1です。 } 文字列res; 固定(sbyte * c = m){res =新しい文字列(c、lk、ll-lk); } 解像度を返す; }