Làm thế nào tìm đc 2 snt liên tiếp ????!!!!!!!!!!!!!!!!!!
Làm thế nào tìm đc 2 snt liên tiếp ????!!!!!!!!!!!!!!!!!!
var a : array[1..600]of qword;
f : array[1..600]of byte;
k : integer;
f1,f2 : text;
function ktra(x:qword):boolean;
var i : longint;
begin
if (x=2)or(x=3)then exit(true) else
begin
for i:=2 to trunc(sqrt(x)) do
if x mod i = 0 then exit(false);
exit(true);
end;
end;
function hop(x,y:qword):qword;
var s1,s2 : string;
begin
str(x,s1);
str(y,s2);
s1:=s1+s2;
val(s1,hop);
end;
procedure xuli;
var i,j : longint;
s,x,y : int64;
begin
a[1]:=2;
j:=1;
i:=3;
fillchar(f,sizeof(f),0);
x:=2;
while f[k]<>1 do
begin
if ktra(i) then
begin
inc(j);
a[j]:=i;
s:=hop(a[j-1],a[j]);
if f[j-1]=0 then
begin
if ktra(s) then
begin
a[j-1]:=s;
f[j-1]:=1;
j:=j-1;
end else j:=j-2;
end;
end;
i:=i+2;
end;
write(f2,a[k]);
close(F2);
end;
begin
assign(f1,'');reset(F1);
assign(F2,'');rewrite(F2);
readln(f1,k);
xuli;
end.
- - - Updated - - -
Viết chương trình nhập vào 1 số la mã rồi biến đổi thành số thập phân.
Viết chương trình nhập vào 1 số la mã rồi biến đổi thành số thập phân.
Var st:string;
so,i:longint;
Begin
Write(' Nhap so la ma: ');Readln(st);
so:=0;
For i:=1 to length(st) do
st[i]:=upcase(st[i]);
For i:=1 to length(st) do
{['I'=1,'V'=5,'X'=10,'L'=50,'C'=100,'D'=500,'M'=1000
,'IV'=4,'IX'=9,'XL=40','XC'=90,'CD'=400,'CM'=900] }
Begin
If (st[i]='I') and (st[i+1] <>'V') and (st[i+1]<>'X') then so:=so+1;
If (st[i]='V') and (st[i-1] <>'I') then so:=so+5;
If (st[i]='X') and (st[i-1]<>'I') and (st[i+1]<>'L') and (st[i+1]<>'C')
then so:=so+10;
If (st[i]='L') and (st[i-1]<>'X') then so:=so+50;
If (st[i]='C') and (st[i-1]<>'X') and (st[i+1] <>'D') and (st[i+1] <>'M')
then so:=so+100;
If (st[i]='D') then so:=so+500;
If (st[i]='M') and (st[i-1]<>'C') then so:=so+1000;
If (st[i]='I') and (st[i+1]='V') then so:=so+4;
If (st[i]='I') and (st[i+1]='X') then so:=so+9;
If (st[i]='X') and (st[i+1]='L') then so:=so+40;
If (st[i]='X') and (st[i+1]='C') then so:=so+90;
If (st[i]='C') and (st[i+1]='D') then so:=so+400;
If (st[i]='C') and (st[i+1]='M') then so:=so+900;
End;
Writeln(' So da chuyen la:',so);
Readln
End.
Chương trình chuyển đổi số La mã sang thập phân:
Code:{--------------------------------------------------------------------------} PROGRAM ROMAN_DECIMA_CONVERT; VAR RomanNumber :String; {Dùng để test} {--------------------------------------------------------------------------} {Đổi toàn bộ chữ thường ra chữ hoa} function Upper (Text :String) :String; var i :Integer; begin for i := 1 to Length (Text) do Text [i] := UpCase (Text [i]); Upper := Text; end; {Upper} {--------------------------------------------------------------------------} {Mô tả: function Roman2Dec (Roman :String) :Integer; - Hàm đổi chữ số La mã sang hệ thập phân. - Vào: Roman : Chữ số La mã (String); - Ra : Chữ số ở hệ thập phân (Integer). - Chữ số La mã: I = 1 V = 5 X = 10 L = 50 C = 100 D = 500 M = 1000 - Xác định giá trị: + Xác định từ chữ số nào lớn nhất, sau đến chữ số nhỏ hơn: ( M ->D ->C ->L ->X ->V ->I ) + Giống nhau thì nhân đôi, nhân ba ... + Khác nhau thì: Chữ số nhỏ hơn: ~Đứng ở bên trái làm giảm giá trị của chữ số lớn hơn ở bên phải ~Đứng ở bên phải làm tăng giá trị của chữ số lớn hơn ở bên trái + VD: MMXIV = 2014 .Lớn nhất MM = 1000*2=2000 .Lớn tiếp theo: X=10 .Lớn tiếp theo: V=5 .Lớn tiếp theo: I=1 .I bên trái V: 5-1=4; .IV bên phải X: 10+4=14 .XIV bên phải MM: 2000+14=2014 } function Roman2Dec (Roman :String) :Integer; const RomanChar = 'IVXLCDM'; {Bảng ký tự chữ số La mã: 7 ký tự} {Và giá trị tương ứng trong chữ số thập phân:} RomanValue :Array [1..7] of Integer = (1, 5, 10, 50, 100, 500, 1000); var i :Byte; {Xử lý trên từng ký tự số La mã} sum :Integer; {Biến tạm, chứa giá trị thập phân} begin sum := 0; {Chú ý: Phải khởi tạo giá trị trước cho biến=0, nếu không kết quả sai} Roman := Upper (Roman); {Ra chữ Hoa} i := Length (Roman); while (i >= 1) do begin if (i > 1) then begin if (Pos (Roman [i], RomanChar) <= (Pos (Roman [i-1], RomanChar))) then begin sum := sum + RomanValue [Pos (Roman [i+0], RomanChar)]; Dec (i); end else begin sum := sum + RomanValue [Pos (Roman [i+0], RomanChar)]; sum := sum - RomanValue [Pos (Roman [i-1], RomanChar)]; Dec (i, 2); end; end else begin sum := sum + RomanValue [Pos (Roman [1], RomanChar)]; Dec (i); end; end; {while} Roman2Dec := sum; {Kết quả} end; {Roman2Dec} {----------------------------Chương trình chính----------------------------} BEGIN { Write ('Nhap vao so La ma: '); ReadLn (RomanNumber); {cần kiểm tra có phải là số La mã} WriteLn ('So La ma ', RomanNumber,' qua He 10 la: ', Roman2Dec (RomanNumber)); ReadLn; } RomanNumber := 'XXI'; {=21; --->Thay đổi giá trị để test...} WriteLn ('So La ma ', RomanNumber,' qua He 10 la: ', Roman2Dec (RomanNumber)); {Dùng trực tiếp: Roman2Dec ('XXI');} ReadLn; END. {2014/12/19} {--------------------------------------------------------------------------}
Được sửa bởi ada95 lúc 11:50 ngày 19-12-2014
Life - Love - Freedom
Các bác đang học 11 vào www.ThuatToan.net mà tham khảo, em thấy có nhiều thuật toán hay
www.VuaTenMien.Com, Mobi & Zalo:O9121Chín1357
Giả sử có N hộp giấy, các hộp được đánh số từ 1 đến N. Với mỗi hộp giấy, bé Ri biết được chính xác độ dài hai cạnh đáy của hộp là a và b.
Yêu cầu: Hãy giúp bé Ri xếp các hộp sao cho số lượng các hộp lồng vào nhau là lớn nhất.
Dữ liệu vào: Cho trong file văn bản XEPHOP.INP, có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N, là số lượng hộp giấy. (1 ≤ N ≤ 1000)
- N dòng tiếp theo: Mỗi dòng ghi hai số nguyên dương ai bi, là độ dài hai cạnh đáy của hộp giấy thứ i. (1 ≤ ai, bi ≤ 32767)
Dữ liệu ra: Ghi ra file văn bản XEPHOP.OUT theo cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương M là số lượng các hộp giấy lồng nhau tìm được.
- Dòng 2: Ghi M số nguyên dương, là chỉ số của M hộp giấy theo thứ tự từ ngoài vào trong của một cách xếp hộp.
Ví dụ:
XEPHOP.INP
5
1 5
5 7
6 4
3 6
2 5
XEPHOP.OUT
3
2 3 5
có thể có các kết quả khác cũng đc miễn là nó đúng với đề bài
các bác giúp em bài này với
Được sửa bởi hoangbit lúc 07:44 ngày 16-02-2016
mấy bài này minh cũng đang làm nhưng chưa ra.
Được sửa bởi hoangbit lúc 23:01 ngày 16-02-2016
khó đấy...đề thi tin cấp gì vậy ?
đề cấp tỉnh.mình làm mãi 2 hôm nay rồi
Bookmarks