1048. Digital encryption (20) time limit MS Memory limit 65536 KB code length limit 8000 B procedure StandardAuthor Chen, Yue
A digital encryption method is required for this subject. First fixed an encryption with a positive integer A, any positive integer b, each of its 1 digits and a corresponding position on the number of the following operation: to the odd digits, the corresponding bit of the number added to 13 to take the remainder--here with J for 10, Q for 11, K for 12, and dual digits minus a number of a number, If the result is negative, then add 10. This makes the digit 1th.
Input format:
The input is given a and b in a row, each of which is a positive integer of no more than 100 bits, separated by a space.
Output format:
Outputs the encrypted result in a row.
Input Sample:
1234567 368782971
Sample output:
3695q8118
Idea: This idea is clearer, first add a short string to the head of the character 0, know two strings equal length, just for the next operation more convenient, and then two strings in the form of a character read into the corresponding word Fu Yi, at this time two stacks of long size must be the same
, a benefit of the stack is because the bit is the last, stack FIFO, just meet, and then the result of processing into a new stack, the stack is to start from the high output, the code as follows, the number of lines of code can be less, but I wrote the way to make the main function more concise
1 //1048.cpp: Defines the entry point of the console application. 2 //3 4#include"stdafx.h"5#include <iostream>6#include <stack>7#include <string>8#include <typeinfo>9 Ten using namespacestd; One A //function Declaration - voidShow_result (stack<Char>& S1, stack<Char>&S2); - voidPush (stack<Char>& S,stringstr); the voidPut_zero (stack<Char>& S1, stack<Char>& S2,Const string& Str1,Const string&str2); - - intMain () - { + stringstr1, str2; -stack<Char>s1, S2; + ACIN >> STR1 >>str2; at - //The string corresponding to the small length of the stack is filled in the character 0, convenient for subsequent calculations - Put_zero (S1, S2, str1, str2); - - //put the string into the corresponding stack - Push (S1, str1); in Push (S2, str2); - to //program implementation and printing + Show_result (S1, S2); - the return 0; * } $ Panax Notoginseng //The stack that corresponds to a small length string is filled with the character 0 first - voidPut_zero (stack<Char>& S1, stack<Char>& S2,Const string& Str1,Const string&str2) the { + intLen = Str1.length ()-str2.length (); A the if(len>0) + { - for(inti =0; i < Len; ++i) $S2.push ('0'); $ } - Else - { the for(inti =0; i <-len; ++i) -S1.push ('0');Wuyi } the } - Wu //to put a string into a stack - voidPush (stack<Char>& S,stringstr) About { $ inti; - - for(i =0; Str[i]! =' /'; ++i) - S.push (Str[i]); A + } the - //Program Implementation $ voidShow_result (stack<Char>& S1, stack<Char>&S2) the { the inti,len=s1.size (); thestack<Char>s; the intA, b,temp; - Chararr[ -] = {'0','1','2','3','4','5','6','7','8','9','J','Q','K' }; in the for(i =0; i < Len; ++i) the { AboutA = static_cast<int> (S1.top ()- -); theb = static_cast<int> (S2.top ()- -); the the if(I &1)//even digits +temp= (b-a) >=0? B-a: b-a+Ten; - Else//Odd digits theTemp = (A + b)% -;Bayi theS.push (Arr[temp]);//put the new characters into the new stack the -S1.pop (), S2.pop ();//stack top element out stack - } the the while(!s.empty ())//post-processing stack output the { thecout <<s.top (); - the S.pop (); the } the 94cout <<Endl; the}
PAT B 1048 Digital Encryption (c + + edition)