Có một tin nhắn được mã hóa và giấu trong một xâu văn bản trước khi gửi đi. Quy tắc mã hóa tin nhắn là thay mỗi chữ cái trong tin nhắn thành một chữ cái đứng cách nó k vị trí trong bảng chữ cái tiếng Anh theo quy tắc xoay vòng, các ký tự không phải chữ cái thì không thay đổi. Trong xâu có thể có nhiều tin nhắn, giữa các tin nhắn được ngăn cách nhau bởi dấu #. Biết rằng tin nhắn có độ dài lớn nhất là tin nhắn cần tìm. Nếu có nhiều tin nhắn có cùng chiều dài thì tin nhắn đầu tiên tìm thấy là tin nhắn cần giải mã.
Yêu cầu: Cho trước một xâu S dài không quá 255 ký tự và một số nguyên dương k. Hãy tìm và giải mã tin nhắn được giấu trong xâu S.
Input: Cho trong tệp văn bản có tên TINNHAN.INP gồm hai dòng:
− Dòng đầu: xâu S;
− Dòng thứ hai: số nguyên dương k.
Ouput: Xuất ra tệp văn bản có tên TINNHAN.OUT gồm hai dòng:
− Dòng đầu: số lượng tin nhắn tìm được;
− Dòng thứ hai: nội dung tin nhắn cần tìm đã được giải mã.
Ví dụ
Input
ABC#QBTDBM#123HGF
1
Output
2
PASCAL
Đăng ký:
Đăng Nhận xét (Atom)
Bài được xem nhiều nhất
-
Cho dãy n số nguyên dương a1, a2, …, an và số nguyên dương S. Hãy đếm xem có bao nhiêu cặp phần tử (ai, aj) (i <> j) thỏa mãn ai + aj ...
-
Xét xâu S chỉ bao gồm các kí tự ngoặc mở ‘(‘ và ngoặc đóng ‘)’. Xâu S xác định một cách đặt ngoặc đúng, nếu thỏa mãn các điều kiện: · Tổng ...
-
Nhập xâu s chỉ chứa các chữ cái viết hoa. Đếm xem s có bao nhiêu kí tự khác nhau. Input · Dòng 1: số test t · t dòng sau: mỗi dòng 1 xâu ...
-
Cho trước số nguyên dương n. Viết chương trình kiểm tra xem có bao nhiêu số nguyên dương nhỏ hơn hoặc bằng n nguyên tố cùng nhau với n (nghĩ...
-
Phân tích số nguyên dương thành tổng các số hạng của dãy Fibonaci sao cho ít số hạng nhất (các số hạng không được trùng nhau). Xem clip hư...
-
(Tuyến sinh phổ thông năng khiếu 2007) Yêu cầu: Hãy tìm số âm lớn nhất X trong dãy.Cho một dãy gồm N số nguyên a1, a2, …, aN, mỗi số có gi...
-
Đề thi tin học trẻ bảng C tỉnh Quảng Bình năm 2009 Trong máy tính, để tiết kiệm bộ nhớ, người ta thường tìm cách nén dữ liệu. T...
-
Tìm số đảo ngược Y của một số X, biết Y gồm các chữ số của X và viết theo thứ tự ngược lại. Xuất ra kết quả là số Y mod 19 Input Output ...
-
Một chuỗi được gọi là có dạng phân số nếu nó có dạng như sau: Tử_số/Mẫu_số. Ví dụ: chuỗi ‘123/456’ biểu diễn cho phân số chuỗi ‘1/12’ biể...
-
Thầy Quách Văn Lượm Điện thoại, Zalo: 0915080405 Facebook: https://www.facebook.com/qvluom Group trao đổi giải thuật: Giải bài tập ...
Uses crt;
Trả lờiXóaVar s,tam:string;
i,j,dem,n,o:longint;
f:array[1..100] of string;
function test(a:string):string;
Var b:string;
x,y:longint;
Begin
b:='';
For x:=1 to length(a) do
Begin
For y:=65 to 91 do
If a[x]=chr(y) then Begin
If (y-n)>=65 then b:=b+chr(y-n) else b:=b+chr(26+y-n);
break; end;
If y=91 then exit('');
end;
exit(b);
end;
Begin
o:=1;
readln(s);
s:='#'+s+'#';
readln(n);
For i:=1 to length(s) do
If s[i]='#' then
For j:=i+1 to length(s) do
If s[j]='#' then
Begin
f[o]:=copy(s,i+1,j-i-1);
o:=o+1;
break;
end;
For i:=1 to o-1 do
Begin
f[i]:=test(f[i]);
If f[i]<>'' then dem:=dem+1;
end;
Writeln(dem);
For i:=1 to o-1 do
For j:=i+1 to o-2 do
If length(f[i])<length(f[j]) then
Begin
tam:=f[i];
f[i]:=f[j];
f[j]:=tam;
end;
Write(f[1]);
readln;
end.
uses crt;
Trả lờiXóavar s,st,st2:string;
i,max,vt,d,k,j:integer;
a:array[1..10000] of string;
begin
clrscr;
readln(s); readln(k);
s:=s+'#';
max:=0;
while length(s)<>0 do
begin
vt:=pos('#',s);
st:=copy(s,1,vt-1);
d:=d+1;
a[d]:=st;
delete(s,1,vt);
end;
for i:=1 to d do
if length(a[i])>max then max:=length(a[i]);
for i:=1 to d do
for j:=i+1 to d do
if length(a[i])=length(a[j]) then st2:=a[i];
for i:=1 to length(st2) do
write(chr(((ord(st2[i])-65-k+26)mod 26)+65));
readln;
end.