giúp em bài này với ạ em cần gấp. Ngày họp phụ huynh học sinh đầu năm học sắp đến, trong công tác chuẩn bị, hai bạn Quạ và Công được phân công phụ trách việc dán sô thứ tự (bắt đầu từ số 1) của các bạn trên bàn theo vị trí ngôi để giúp các phụ huynh dễ tìm. Quạ nhanh nhâu xí phần in số thứ tự còn Công sẽ dán chúng theo vị trí của các bạn. Sau đó vì mái chơi nên Quạ không chuân bị số thứ tự của từng bạn trong lớp mà bạn Ấy chỉ in ngẫu nhiên môt dãy các chữ SỐ viết liền nhau, chuyên cho Công rồi đi chơi tiếp. Dù vậy, bạn Công vẫn rất chịu khó cắt, ghép các chữ sô đề dán theo số thứ tự cho cả lớp. Tuy nhiên bạn Công lo lắng không biết có đủ các chữ số để đán hết sô thử tự cho cả lớp không? Yêu cầu: Bạn hãy giúp Công xem dãy số Quạ đưa có thể tạo đủ số thứ tự cho tất cả học sinh trong lớp không? Nếu không bạn hãy cho Công biết thiếu số nào và thiếu bao nhiêu để Công nhờ Quạ in bố sung nhé! Dữ liệu vào: từ tập tin STT.INP gồm 2 dòng: - dòng thứ nhất là một số nguyên dương N (5 <= N <= 50) cho biết sĩ số của lớp; - dòng thứ hai ghi dãy số (gồm tối đa 100 ký số) mà Quạ đã đưa cho Công. Kết quả: Ghi vào tập tin STT.OUT theo quy tắc sau: - Nếu dãy số Quạ đã đưa cho Công đủ để dán số thứ tự cho cả lớp thì ghi 0. - — Ngược lại, nếu không đủ thì trên từng dòng, bạn hãy in 2 giá trị cách nhau một khoảng trắng: giá trị đầu là chữ số còn thiếu, giá trị sau là số lượng cần bố sung của chữ số đó. In các chữ số thiếu theo thứ tự từ nhỏ đến lớn. Ví dụ: SIT.INP STT.OUT 5 0 1135679240 12 11 357112191023045607 81
1 câu trả lời
var kt1,kt2,i,n,j,m:byte;
t,k,st,st1:string;
a:array[0..5,0..100] of byte;
f1,f2:text;
const fi='SIT.INP';
fo='STT.OUT';
begin
assign(f1,fi);reset(f1);
assign(f2,fo);rewrite(f2);
readln(f1,n);
readln(f1,st1);
t:='';kt1:=0;
for i:=n downto 1 do
begin
st:=st1;
str(i,k);
kt2:=0;
for j:=1 to length(k) do
begin
if pos(k[j],st)<>0 then
delete(st,pos(k[j],st),1)
else
begin
inc(kt2);
t:=t+k[j];
kt1:=1;
end;
end;
if kt2=0 then st1:=st
else
begin
inc(m);
a[1,m]:=i;
a[2,m]:=kt2;
end;
end;
if kt1=0 then writeln(f2,'0')
else
for i:=m downto 1 do writeln(f2,a[1,i],' ',a[2,i]);
close(f1);close(f2);
end.