PAT B 1048デジタル暗号C ++ / Javaの

元のタイトル

この問題は、デジタル暗号化の方法を達成するために必要。まず、任意の正の整数Bのために、固定された正整数Aで暗号化し、次の動作にデジタル1ビットに対応した位置のそれぞれの数字は:奇数のビットの後、デジタル和の対応するビットが13を法 - - 10ここでJ、Q 11、K 12表す代表の代表を使用;結果が否定的である場合でもビットで、数Bマイナスの数で、次に10を追加します。ここでは最初のものを作るために少し。

入力フォーマット:

1つの行に順次入力AおよびBに与えられ、これ以上100以下は、隙間によって分離された正の整数、ではありません。

出力フォーマット:

出力は、一列に暗号化されます。

サンプル入力:

1234567 368782971

出力例:

3695Q8118

分析:

1. Aが長さBよりも長い場合、補体高いB 0。高いゼロパディングの長さBが長さA未満である場合、Aは、(ピットがあることに注意してください!)

現在のビットを記録するカウント= 1が奇数又は偶数ビットであると前記第1ビット(奇数)のビットは、その後、端から文字列を横切ります

NEWSTRINGに文字列[RES]を保存するために、0-K、演算結果RESを保持する文字列を図3に示すように、最後は出力NEWSTRINGを逆転することができるであろう

4.ハング:私は、テストカードを開始し、テストポイント5ポイント2を、これら2つのテスト点BがAよりも長い、I BはBまでの非常に高い、コードの長さを循環するあります更新するための0の後に、長さB  LENGTHB = a.sizeを(); 

 

C ++の実装:

1の#include <iostreamの>
 2の#include <ベクトル>
 3の#include < ストリング >
 4  使って 名前空間STDを、
5  
6  INT )(メイン
 7  {
 8      A、B。
9      ベクトル< チャー > NEWSTRING。
10      文字列 NUM = " 0123456789JQK " 11      CIN >> A >> B。
12      INT lengthA = A.size()。
13      INT LENGTHB = B.size()。
14     int型のres = 0 ;
15      であれば(lengthA < LENGTHB)
 16      {
 17          // A:001234567
 18          // B:368782971
 19          // 短的补零
20          A.insert(0、LENGTHB - lengthA、' 0 ' )。
21      }
 22      他の
23      {
 24          // A:1234567
 25          // B:0782971 
26          B.insert(0、lengthA - LENGTHB、' 0 ' )。
27         = lengthAのLENGTHB;     // ピットがあることに注意してください
28      }
 29  
30      int型 COUNT = 1 ;     //はビット表し
31がある     ためint型 - I = LENGTHB 。1 ; I> = 0 - ; I)
 32      {
 33は         IF(COUNT%2 == 1 34は         、{
 35              - RESの=(B [I] ' 0 ' - + A [I] ' 0 ')%13であり36             newString.push_back(NUM [RES])。
37          }
 38          そう であれば(%カウント2 == 0 39          {
 40件              のRES =(B [1] - [I])。
41              であれば(RES < 0 42              {
 43の                  RES + = 10 44              }
 45              newString.push_back(NUM [RES])。    
46          }
 47          数++ ;
48      }
 49      のためのint型I = newString.size() - 1 ; I> = 0 ; - I)
 50      {
 51          COUT << NEWSTRING [I]。
52      }
 53      リターン 0 54 }

 

 

Java実装:

おすすめ

転載: www.cnblogs.com/47Pineapple/p/11716964.html