デジタル暗号化1048(20分)
この問題は、デジタル暗号化の方法を達成するために必要。最初は、固定された正整数Aで暗号化し、対応する位置の各々上の任意の正の整数B、および番号の操作下記Aにデジタル1ビット:奇数のビットの後、デジタル和モジュロ13の対応するビット - - 10 J、Q 11、K 12表すの代表の代表ここで使用される;結果が否定的である場合でもビットで、数Bマイナスの数で、次に10を追加します。最初のものを作るために少しをここに。
入力フォーマット:
一つの行に順次入力AおよびBに与えられ、せいぜい100は、隙間によって分離された正の整数、ではありません。
出力フォーマット:
出力は、一列に暗号化されます。
サンプル入力:
1234567 368782971
出力例:
3695Q8118
要注意的地方:
输入以最大位数为主
例如:12345 1 看作是12345 00001
123 12345看作是 00123 12345
首次通过代码:
1の#include <stdio.hの> 2の#include < ストリング・H> 3 4 int型のmain(){ 5 チャー鍵[ 101 ]。 6 チャー USER_INPUT [ 101 ]。 7 チャー final_input [ 101 ]。 8 のscanf(" %S%S " 、キー、USER_INPUT)。 9 INT key_lenに= STRLEN(キー) - 1 。 10 INT user_input_len = STRLEN(USER_INPUT) - 1 。 11 int型の最大値。 12 もし(key_lenに> user_input_len)MAX = key_lenに。 13 他に最大= user_input_len。 14 のintフラグ= 1。int型 FLAG1 = 1 ; 15 final_input [MAX + 1 ] = ' \ 0 ' 。 16 一方、(1 ){ 17 であれば(user_input_len < 0 ){ 18 場合(FLAG1){ 19 のために(INTは iは= 0 ; I <= key_lenに、I ++ ){ 20 USER_INPUTを[I] = '0 " ; 21 } 22 FLAG1 = 0 。 23 user_input_len = key_lenに。 24は 続けます。 25 } 26 ブレーク。 27 } 28 そう であれば(key_lenに< 0 ){ 29 のために(INT I = user_input_len; I> = 0 ; i-- ){ 30 final_input [最大- ] = USER_INPUT [I]。 31 } 32 ブレーク。 33 } 34 であれば(フラグ){ 35 フラグ= 0 。 36 INT X =(キー[key_lenに] + USER_INPUT [user_input_len] - ' 0 ' - ' 0 ')%13 。 37 であれば(x> = 0 && X <= 9)final_input [最大- ] = X + ' 0 ' 。 38 他{ 39 スイッチ(X){ 40 ケース 10:final_input [最大- ] = ' J '。休憩; 41 ケース 11:final_input [最大- ] = ' Q ' ; 休憩; 42 ケース 12:final_input [最大- ] = ' K '。休憩; 43 } 44 } 45 46 } 47 他{ 48 フラグ= 1 。 49 INT X = USER_INPUT [user_input_len] - キー[key_lenに]。 50 であれば(X < 0)、X + = 10 。 51 final_input [最大- ] = X +' 0 ' ; 52 53 } 54 user_input_len-- 。 55 key_len-- ; 56 } 57 58 のprintf(" %sの" 、final_input)。 59 リターン 0 ; 60 61 }