Để đảm bảo an ninh dữ liệu tại
sân bay, nhà chức trách đã xác lập mật khẩu từ bảng số liệu có n hàng (n ≤ 10) h1, h2, …, hn
tương ứng với hàng thứ 1, 2, …, n tính từ trên xuống, mỗi hàng hi
(i=1,…,n) có ít nhất từ 3 đến không quá 100 số tự nhiên được phân biệt bởi dấu
cách. Mật khẩu được xác định bằng cách viết liên tiếp n số x1, x2,
…, xn theo thứ tự từ trái sang phải, với xi (i=1,2 ,…n)
là số cách chọn bao số tuỳ ý trên hàng hi, sao cho tích ba số đó
chia hết cho tổng của chúng.
Yêu cầu:
Lập trình giúp nhà chức trách sân bay xác lập mật khẩu.
- Dữ
liệu vào: Đọc từ file văn bản MATKHAU.INP
chứa n hàng như phần mô tả trong bảng
số liệu đã nêu trên.
- Dữ
liệu ra: Kết quả ghi ra file văn bản MATKHAU.OUT là số mật khẩu tìm được.
Ví dụ:
MATKHAU.INP |
MATKHAU.OUT |
0 1 3 5 3 4 1 3 1 3 2 3 3 1 2 1 1 3 0 1 3 1 |
271303 |
Ý tưởng:
+ Đọc hết 1
dòng vào mảng A (N phần tử)
+ Dùng 3 vòng
For (mỗi dòng nhiều nhất 10^2 vậy 3 vòng For 10^6 và nhiều nhất là 10 vòng, vậy
O(10^1 * 10^6 = 10^7)).
+ Kiểm tra
tích 3 số có chia hết cho tổng hay không?
Nếu (a[i]*a[j]*a[k]) mod
(a[i]+a[j]+a[k]) = 0 thì d:=d+1;
Trong thời đại ngày nay, thông
tin cá nhân của mỗi người dễ dàng bị xâm nhập bởi rất nhiều công nghệ hiện đại
dùng nghe lén. Chính vì vậy, một đôi bạn muốn bảo mật thông tin cho nhau đã có
sáng kiến nghĩ ra cách trao nhau những thông điệp mà người khác đọc hoặc nghe
được thì không hiểu gì. Thông điệp của họ là một câu với nhiều từ được phân biệt
bởi ký tự trắng (dấu cách) và được sắp xếp lộn xộn để trở thành câu vô nghĩa. Để
hiểu nội dung một thông điệp của người bạn gửi cho mình, hai người bạn đã quy ước
trước một bộ mã là một dãy số nguyên dương có số lượng tương ứng với số từ của
thông điệp nhằm giải mã thành câu có ý nghĩa.
- Dữ
liệu vào: Đọc từ file văn bản GIAIMA.INP
gồm hai dòng:
+
Dòng thứ nhất ghi một chuỗi ký tự có số lượng không quá 50 từ, mỗi từ không quá
30 ký tự.
+
Dòng thứ hai ghi bộ mã gồm một dãy các số nguyên dương đôi một khác nhau để giải
mã thông điệp trên.
- Dữ
liệu ra: File văn bản GIAIMA.OUT
gồm một dòng ghi câu đã được giải mã từ thông điệp đã cho.
Ví dụ:
GIAIMA.INP |
GIAIMA.OUT |
luon chuc hoc ban gioi luon 2 4 1 6 3 5 |
chuc ban luon luon hoc gioi |
CODE THAM KHẢO:
program Giai_Ma;
var Tex:array[1..101] of string;
key: array[1..101] of byte;
S,S1:string;
n,i:byte;
fi,fo:text;
procedure tachtu;
var s1: string; i,M: byte;
begin
M:=0; S:=S+' '; s1:='';
for i:=1 to length(s) do
begin
if (s[i]=#32) and (length(s1)>0) then
begin
M:=M+1;
Tex[M]:=S1;
s1:='';
end
else s1:=s1+s[i];
end;
end;
begin
assign(fi,'GIAIMA.INP'); reset(fi);
readln(fi,S);
n:=0;
while not eoln(fi) do
begin
n:=n+1;
read(fi,key[n]);
end;
assign(fo,'GIAIMA.OUT'); rewrite(fo);
tachtu;
for i:=1 to n do write(fo,tex[Key[i]],' ');
close(fi); close(fo);
end.
Một tư nhân có hai tàu thuỷ chuyên vận chuyển hàng khô rất uy tín đối với khách hàng. Được uy tín như vậy là do lịch trình cập cảng của các tàu đảm bảo số ngày quy định, an toàn và cập cảng ngày nào thì cũng rời cảng trong chính ngày đó. Tại cảng chính, tàu thứ nhất cứ K ngày cập cảng 1 lần; tàu thứ hai cứ S ngày cập cảng 1 lần (k≠s).
Yêu cầu: Lập trình tính xem nếu hai tàu
cùng rời cảng thì thời gian ngắn nhất gặp lại nhau tại cảng đó là bao nhiêu
ngày?
- Dữ
liệu vào: Đọc từ file văn bản TAU.INP
chứa một dòng gồm hai số nguyên dương K
và S, hai số cách nhau ít nhất một
ký tự trắng.
- Dữ
liệu ra: Kết quả ghi ra file văn bản TAU.OUT thời gian ngắn nhất.
TAU.INP |
TAU.OUT |
6 4 |
12 |
Ý tưởng: Tìm bội chung nhỏ
nhất (thuật toán Euclid)
CODE THAM KHẢO:
program Tau_Cap_Cang;
var S,K: integer;
f: text;
function UCLN(a,b: integer): integer;
var r: integer;
begin
while b <> 0 do
begin
r:= a mod b;
a:=b;
b:=r;
end;
UCLN:=a;
end;
begin
assign(f,'TAU.INP'); reset(f);
readln(f,K,S);
close(f);
assign(f,'TAU.OUT'); rewrite(f);
write(f,S*K/UCLN(K,S):0:0);
close(f);
end.
Số siêu nguyên tố là số nguyên tố mà khi bỏ một số tuỳ ý các chữ số bên phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố.
Ví dụ:
7331 là một số siêu nguyên tố có 4 chữ số, vì 733, 73, 7 cũng là các số
nguyên tố.
Em
hãy viết chương trình tìm các số siêu nguyên tố có N chữ số (0<N<10) và số
lượng các số tìm được.
Dữ liệu
vào: cho trong File SIEUNT.INP
chứa số N.
Kết
quả: ghi ra file SIEUNT.OUT
gồm các dòng:
- Dòng 1: số lượng các số siêu nguyên tố
có N chữ số.
- Dòng tiếp theo: liệt kê các số siêu
nguyên tố tìm được (hiển thị 3 số trên 1 dòng).
Ví dụ:
SIEUNT.INP |
SIEUNT.OUT |
4 |
16 2333 2339 2393 2399 2939 3119 3137 3733 3739 3793 3797 5939 7193 7331 7333 7393 |
Số tự nhiên N gọi là dư thừa nếu tổng các ước số của N (bao gồm cả 1 nhưng không có N) lớn hơn N.
Bài toán: Tìm số M là số dư thừa
nhỏ nhất không nhỏ hơn N.
Dữ liệu: Cho trong file văn bản ANUM.INP, gồm số tự nhiên N.
Kết quả: Cho trong tập tin văn bản ANUM.OUT, gồm số M là số dư thừa nhỏ nhất
không nhỏ hơn N. Giả sử rằng kết quả là số tự nhiên không quá 10000.
Ví dụ:
ANUM.INP |
ANUM.OUT |
6 |
12 |
Một mảng có kích thước 5
x 5 gồm các số nguyên dương được sắp xếp theo quy luật sau:
1 |
2 |
3 |
4 |
5 |
2 |
4 |
6 |
8 |
10 |
3 |
6 |
9 |
2 |
4 |
4 |
8 |
2 |
4 |
6 |
5 |
10 |
4 |
6 |
8 |
Hãy tạo ra bảng n x
n theo quy luật trên.
Dữ liệu vào từ file: TAOBANG.INP
- Dòng duy nhất ghi số n (1 ≤ n ≤ 600).
Kết quả ra file: TAOBANG.OUT
- Gồm n dòng, mỗi
dòng gồm n số được sắp xếp theo quy luật, mỗi số cách nhau một khoảng trắng.
Ví dụ:
TAOBANG.INP |
TAOBANG.OUT |
6 |
1 2 3 4 5 6 2 4 6 8 10 12 3 6 9 12 2 4 4 8 12 2 4 6 5 10 2 4 6 8 6 12 4 6 8 10 |