
Khi làm việc với các số tự nhiên, Tom và Jerry thích sắp xếp chúng theo thứ tự từ điển giống như so sánh xâu kí tự, chẳng hạn dãy số (1, 8, 9, 10, 11, 100) sẽ được sắp xếp thành (1, 10, 100, 11, 8, 9). Bài toán Tom đặt ra cho Jerry là: cho ba số A, B, K thì số trong đoạn [A; B] chia hết cho K có thứ tự từ điển nhỏ nhất là số nào? Hãy giúp Jerry giải bài toán trên.
Dữ liệu vào: Một dòng duy nhất ghi ba số nguyên A, B, K (1 ≤ A ≤ B ≤ 109, 1 ≤ K ≤ 109). Dữ liệu vào đảm bảo luôn có nghiệm.
Dữ liệu ra: Một dòng duy nhất ghi một số nguyên tìm được.
Ví dụ:
Input Output
96 105 3 102
Giải thích
Đoạn [96;105] có 4 số chia hết cho 3 là 96, 99, 102, 105. Dãy số trên được xếp theo thứ tự từđiển ởdạng xâu là 102, 105, 96, 99. Vậy đáp án phải tìm là 102.
Dữ liệu vào: Một dòng duy nhất ghi ba số nguyên A, B, K (1 ≤ A ≤ B ≤ 109, 1 ≤ K ≤ 109). Dữ liệu vào đảm bảo luôn có nghiệm.
Dữ liệu ra: Một dòng duy nhất ghi một số nguyên tìm được.
Ví dụ:
Input Output
96 105 3 102
Giải thích
Đoạn [96;105] có 4 số chia hết cho 3 là 96, 99, 102, 105. Dãy số trên được xếp theo thứ tự từđiển ởdạng xâu là 102, 105, 96, 99. Vậy đáp án phải tìm là 102.
Nhận xét này đã bị tác giả xóa.
Trả lờiXóaUses crt;
Trả lờiXóaVar i,j,a,b,k,o,t,d,d2:longint;
f:array[1..10000] of longint;
s:array[1..10000] of string;
t2:string;
Begin
o:=1;
readln(a);
readln(b);
readln(k);
For i:=a to b do
If i mod k=0 then Begin Str(i,t2); f[o]:=i; s[o]:=t2; o:=o+1; end;
For i:=1 to o-2 do
For j:=i+1 to o-1 do
Begin
d:=10-length(s[i]);
d2:=10-length(s[j]);
If f[i]*exp(10*ln(d))>f[j]*exp(10*ln(d2)) then
Begin
t:=f[i];
f[i]:=f[j];
f[j]:=t;
t2:=s[i];
s[i]:=s[j];
s[j]:=t2;
end;
end;
Write(f[1]);
readln;
end.
program nh;
Trả lờiXóauses crt;
var a,b,k,i,j,d,dem:longint;
tam:string;
f:array[1..100] of integer;
s:array[1..100] of string;
begin
clrscr;
readln(a,b); readln(k);
d:=0;
for i:=a to b do
if i mod k=0 then
begin
d:=d+1;
f[d]:=i;
end;
dem:=0;
for i:=1 to d do
begin
dem:=dem+1;
str(f[i],s[dem]);
end;
for i:=1 to dem-1 do
for j:=i+1 to dem do
if s[i]>s[j] then
begin
tam:=s[i];
s[i]:=s[j];
s[j]:=tam;
end;
writeln(s[1]);
readln;
end.
cái này chạy bị time đấy, cop bậy vào k đc đâu
Trả lờiXóa