Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

PTIT018D - ACM PTIT 2018 D - MÃ HÓA DRM

Cho một xâu ký tự. Quá trình mã hóa DRM sẽ trải qua ba bước Chia (Divide), Xoay (Rotate) và Trộn (Merge). Ví dụ với xâu: EWPGAJRB  quá trình này sẽ diễn ra như sau:

  • Devide: Xâu ban đầu được chia thành 2 nửa: “EWPG” và “AJRB”.
  • Rotate: Với mỗi nửa, tính toán giá trị xoay của nó bằng cách tính tổng giá trị các ký tự. (A = 0; B = 1; … Z = 25).  Giá trị xoay của “EWPG” là 4 + 22 + 15 + 6 = 47. Tiến hành xoay xâu  “EWPG”  đi 47 ký tự (tính cả bước chuyển từ Z về A nếu cần) ta sẽ được xâu: “ZRKB”. Tương tự, “AJRB” được chuyển thành “BKSC”
  • Merge: Trong bước này, mỗi ký tự trong xâu thứ nhất sẽ được xoay theo giá trị của ký tự ở vị trí tương ứng trong xâu thứ 2. Trong ví dụ trên, chữ Z trong xâu thứ nhất sẽ xoay theo giá trị B, tức là 1 vị trí. Do đó sẽ chuyển thành chữ A. Tiếp tục thực hiện với các ký tự tiếp theo ta sẽ có kết quả là “ABCD”.

Cho một xâu ký tự chỉ bao gồm các chữ cái in hoa với số lượng ký tự là chẵn, bạn hãy tìm xâu mã hóa DRM tương ứng.

Input

Dòng đầu ghi số bộ test T (T≤30).

Mỗi bộ test ghi trên một dòng xâu ký tự cần mã hóa, chỉ gồm các chữ cái in hoa, độ dài là chẵn và không quá 15000 ký tự.

Output

Với mỗi test in ra trên một dòng kết quả mã hóa DRM tương ứng.

Example

Input:
3
EWPGAJRB
BB
TPQJDRJWSQXGRRIPXFMINTELHBJA
Output:
ABCD
E
FIRSTDATAFILEV

Được gửi lên bởi:Admin
Ngày:2018-05-14
Thời gian chạy:1s
Giới hạn mã nguồn:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Ngôn ngữ cho phép:ASM32-GCC ASM32 ASM64 MAWK BC C CSHARP C++ 4.3.2 CPP CPP14 COFFEE LISP sbcl DART FORTH GO JAVA JS-RHINO JS-MONKEY KTLN OCT PAS-GPC PAS-FPC PERL6 PERL PROLOG PYTHON PYTHON3 PY_NBC R RACKET SQLITE SWIFT UNLAMBDA

hide comments
2019-03-25 13:56:02
1 đấm
#include<bits/stdc++.h>
using namespace std;
int main(){
int test;
cin>>test;
while(test--){
string s,s1,s2;
cin>>s;
long long sum = 0,sum1=0;
for(long long i = 0;i<(s.size())/2;i++){
s1+=s[i];
sum+=s[i]-65;
}
for(long long i = (s.size())/2;i<s.size();i++){
s2+=s[i];
sum1+=s[i]-65;
}
for(long long i = 0;i<s1.size();i++){
s1[i] = ((s1[i]-65+sum)%26)+65;
}
for(long long i = 0;i<s2.size();i++){
s2[i] = ((s2[i]-65+sum1)%26)+65;
}
for(long long i = 0;i<s1.size();i++){
s1[i] = ((s1[i]-65+(s2[i]-65))%26)+65;
}
cout<<s1<<endl;

}
}
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.