Haga clic en el enlace completo Resumen solución PAT B -AC
Título:
El título requerido para lograr un método de cifrado digital. En primer lugar, cifrada con un número entero positivo A fija, para cualquier entero positivo B, y los números en cada una de las posiciones correspondientes a 1 bits digital a una operación siguiente: Después de un bit impar, el bit correspondiente del módulo de suma digital 13 - - 10 usada aquí representante de J, representante de Q 11, K 12 representa; en poco incluso, con el número B menos el número de una, si el resultado es negativo, entonces añadir 10. Aquí un poco para que la primera.
Formato de entrada:
secuencia de entrada se da en la fila A y B, no más de 100 son enteros positivos, separadas por un espacio entre ellos.
Formato de salida:
el resultado de la salida cifrada en una fila.
de entrada de la muestra:
1234567 368782971
Resultado de muestra:
3695Q8118
Mi código:
#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstring>
#include<sstream>
using namespace std;
//有的时候题目是一起做的,所以会有不需要的头文件
int main()
{
string aa,bb;
cin>>aa>>bb;
if(bb.length()<aa.length())bb.insert(0,aa.length()-bb.length(),'0');
int len_a=aa.length();
int len_b=bb.length();
for(int i=1;i<=len_a&&i<=len_b;i++)
{//从1开始方便计算奇数偶数
if(i%2)//奇数
{
int mod=(aa[len_a-i]-'0'+bb[len_b-i]-'0')%13;
if(mod==10)bb[len_b-i]='J';
else if(mod==11)bb[len_b-i]='Q';
else if(mod==12)bb[len_b-i]='K';
else bb[len_b-i]='0'+mod;
}
else//偶数
{
int mod=bb[len_b-i]-aa[len_a-i];
if(mod<0)mod+=10;
bb[len_b-i]='0'+mod;
}
}
cout<<bb;
return 0;
}
Tenga en cuenta que b es menor que una longitud de tiempo, también debería tener que pasar todos los números a, b que se llena con ceros delante de cálculo, de lo contrario habrá dos casos de error