ブルーブリッジカップ:統治の文字列は、16進数の変換を使用することはできません
[問題の説明]
暁には、対応するZ 26と、A、B 2に対応する、というように文字で、図1に対応します。以上27桁のために、ビットの2つの以上の文字列に対応して暁には、例えば、27 AAに対応する、28に対応するABは、AZ 52、LQ 329相当に対応します。
何ウィル2019対応する文字列?
一見それはバイナリ変換を調査することであるようだが、後でわかりますプログラムについて書いた:
A = 1、B = 2、... Z-26 =はい、0はありません、それは解決策に変換するための通常のベースに十分ではないアイデアです
思考
簡単によって幾何 26であるので、数学的知識は、複数の三文字以上ないと判定された文字で示される2 * 3> 2019 = 676676
直接的な暴力のような解決策は、現在のような、それが最大のデジタルXの一つ見つけることであるどの程度を決定するために最高レベルに等しくなるようになる26 2 * X未満2019に等しいよりも
デジタル変換次いでや:2019から26 = X * 2へ
#include <iostream>
using namespace std;
int a[4];
int len = 0;
int main()
{
int x = 2019;
for(int i=3; i>=1; i--)
{
int radix = 1;
for(int j=0; j<i-1; j++)
{
radix *= 26;
}
for(int j=26; j>=1; j--)
{
if(radix*j <= x)
{
a[len++] = j;
x -= (radix * j);
break;
}
}
}
for(int i=0; i<len; i++)
{
cout<<(char)('A'-1+a[i])<<" ";
}
return 0;
}