Kết quả 21 đến 30 của 47
-
07-21-2016, 04:09 PM #21Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Gửi bởi vansonqtqb
-
07-21-2016, 04:46 PM #22Banned
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
theo ban cách này có nhanh hơn cách duyệt bội như ta đã làm ko ban
-
07-21-2016, 04:48 PM #23Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 8
theo bạn cách này có nhanh hơn cách bạn phân tích ko bạn
function pp(n:longint):boolean;
var i:longint;
S:longint;
begin
s:=1;
for i:=2 to trunc(sqrt(n)) do
if n mod i = 0 then
begin
inc(s,i);
if i<>n div i then
inc(s,n div i);
if s>n then exit(true);
end;
exit(s>n);
-
07-22-2016, 03:03 PM #24Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
bạn xem bài này có thể giúp được gì cho mình không
Cho số X gồm N chữ số, Số Y gồm M chữ số (1<=M<=32000; 1<=N<=32000)).
Yêu cầu: Tính ucln 2 số X và Y.
Dữ liệu vào: Cho trong file văn bản UC.INP có cấu trúc như sau:
Dòng 1: Ghi 2 số nguyên dương N M mỗi số cách nhau một dấu cách.
Dòng 2: Ghi số X
Dòng 3: Ghi số Y
Dữ liệu ra: Ghi ra file UC.OUT, theo cấu trúc như sau:
Dòng 1: Ghi giá trị UCLN.
Ví dụ:
UC.INP
UC.OUT
3 4
333
5436
9
-
07-22-2016, 03:24 PM #25Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Bài này đơn giản nhất là dùng thuật toán của Euclid với phép trừ. Tuy nhiên phải làm việc với số lớn.
- Bạn dùng array of shortint gồm 32000 phần tử để lưu số. Dùng shortint để tiết kiệm bộ nhớ. Hàng đơn vị được lưu ở vị trí thứ 1 trong mảng.
- Bạn cần viết 1 function trừ 2 số. Chúng ta trừ tay như thế nào thì viết chương trình như vậy nhé.
- Bạn cũng cần 1 hàm để so sánh 2 số dạng mảng.
-
07-22-2016, 04:27 PM #26Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
noi chung mình cũng đã biết cách lưu trữ từng chữ số vào mảng rồi.nhưng chỉ biết được chừng đó thôi.ko biết cách để áp dụng những thuật mà bạn nói..mong bạn giải thích cụ thể cho mình bằng chương trình được ko ak..thanh ban
-
07-22-2016, 07:55 PM #27Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Gửi bởi vansonqtqb
Thuật toán kiểm tra 1 số có phải là số phong phú hay không khác với thuật toán liệt kê rồi đếm số phong phú. Tương tự như với số nguyên tố: kiểm tra 1 số là số nguyên tố sẽ khác với liệt kê số nguyên tố. Nếu đoạn ko lớn thì sẽ ko thấy gì nhiều, nhưng nếu như lớn thì bấy giờ sự khác biệt rất rõ. Tiêu biểu cho 2 dạng này chính là:
- Với từng số n trong đoạn cần tìm, kiểm tra n có phải là nguyên tố hay không bằng cách tìm ước trong khoảng sqrt(n).
- Sàng nguyên tố (dạng Sieve) từ 2 tới n.
Bạn chạy thử chương trình này sẽ thấy: kết quả đầu là dùng kiểu kiểm tra từng số, kết quả sau là dùng kiểu mình đã ghi. Bạn nhớ chạy bằng Free Pascal nhé.
Mã:var left, right : longint; function pp(n:longint):boolean; var i, S : longint; begin s:=1; for i:=2 to trunc(sqrt(n)) do if n mod i = 0 then begin s := s + i; if i<>n div i then s := s + n div i; if s>n then exit(true); end; exit(s>n); end; function countPP2(left, right : longint) : longint; var i, count : longint; begin count := 0; for i := left to right do if PP(i) then count := count + 1; exit(count); end; function countPP1(left, right : longint) : longint; var i, j, count, t : longint; sum : array[2..100001] of longint; begin for i := 2 to right do sum[i] := 1; count := 0; t := right div 2 + 1; for i := 2 to t do begin j := i * 2; while (j <= right) do begin sum[j] := sum[j] + i; j := j + i; end; if (i >= left) and (sum[i] > i) then inc(count); end; exit(count); end; begin left := 2; right := 100000; writeln(countPP2(left, right)); writeln(countPP1(left, right)); end.
-
07-23-2016, 01:50 PM #28Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
bạn giúp mình với đk ko ak. cảm ơn bạn....
-
07-23-2016, 04:00 PM #29Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Mình đang dọn nhà nên mấy hôm nay hơi bận tí. Mình chưa test kỹ lắm, nên bạn kiểm tra lại xem sao nhé.
Đầu tiên, chúng ta cần 1 type của shortint để chứa số trước:
Mã:type numArray = array[1..32000] of shortint;
Sau đó là procedure so sánh 2 số. Procedure này trả ra 1 nếu a > b; 0 nếu a = b; và -1 nếu a < b.
Mã:function compare(a: numArray; na: integer; b: numArray; nb: integer) : shortint; var i : integer; begin if (na < nb) then exit(-1); if (na > nb) then exit(1); for i := na downto 1 do begin if (a[i] > b[i]) then exit(1); if (a[i] < b[i]) then exit(-1); end; exit(0); end;
Mã:procedure differences(var a: numArray; var na: integer; b: numArray; nb: integer); var i, index : integer; nho : shortint; begin nho := 0; index := 1; for i := 1 to na do begin if (a[i] >= b[i] + nho) then begin a[i] := a[i] - b[i] - nho; nho := 0; end else begin a[i] := a[i] + 10 - b[i] - nho; nho := 1; end; if (a[i] > 0) then index := i; end; na := index; end;
Mã:procedure greatestCommonDivisor(var a: numArray; var na: integer; var b: numArray; var nb: integer); var t : shortint; begin t := compare(a, na, b, nb); while (t <> 0) do begin if (t > 0) then differences(a, na, b, nb); if (t < 0) then differences(b, nb, a, na); t := compare(a, na, b, nb); end; end;
Mã:for i := na downto 1 do
-
07-23-2016, 04:46 PM #30Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
cảm ơn bạn rất nhiều.cho mình hỏi thêm ở thủ tục trừ hai số có phải bạn mới chỉ xét 1 trườngng hợp a>=b thôi pải ko ak.
nếu có thời gian rảnh mong bạn có thể post chương trình cho mình với dk ko ak..mình cũng muốn học hỏi thêm kiến thức..mong bạn giúp đỡ..
In the realm of creative play and imaginative adventures, children's wicker shopping trolleys emerge as a charming and versatile toy for little ones to embark on pretend shopping trips and grocery...
Children's Wicker Shopping Trolley...