Tin học Tin học nâng cao

Phượng Hồng Ngày Xưa Đã Úa Tàn

Học sinh mới
Thành viên
30 Tháng một 2019
5
2
6
19
Phú Yên
Trường THCS-THPT Võ Nguyên Giáp
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Giai thừa của 1 số nguyên dương N (ký hiệu là N!) bằng tích của các số tự nhiên từ 1 đến N.
Ví dụ: 4! = 1x2x3x4 = 24
...........6! = 1x2x3x4x5x6 = 720
Yêu cầu: Cho số nguyên dương N. Hãy đếm xem N! có bao nhiêu ước số?
+ Dữ liệu vào: Từ tệp văn bản UOCSO.INP gồm 1 dòng là số nguyên dương N (0<N≤20)
+ Dữ liệu ra: ghi vào tệp văn bản UOCSO.OUT, 1 dòng duy nhất là kết quả cần tìm.
Ví dụ:
UOCSO.INP
......UOCSO.OUT
........4........................8.............

Giải thích: 4!=24, 24 có 8 ước số là: 1, 2, 3, 4, 6, 8, 12, 24.
Giới hạn dữ liệu: Có 60% số điểm ứng với số test có N ≤ 10.


check giùm em bài này

program UOCSO;
var N,i,j,y:longint;
S,T,dem:int64;
A:array[1..1000]of longint;
Function SNT(K:Longint):Boolean;
Var z:longint;
Begin
SNT:=True;
If K<2 then exit(False);
For z:=2 to Trunc(Sqrt(K)) do
If K mod z=0 then
exit(False);
End;
const inp='UOCSO.INP';
out='UOCSO.OUT';
begin
assign(input,inp); reset(input);
assign(output,out); rewrite(output);
readln(N); T:=1;
for i:=1 to N do T:=T*i;
for i:=1 to T do
begin
j:=j+1;
if T mod j=0 then dem:=dem+1;
end;
writeln(dem);
end.
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Giai thừa của 1 số nguyên dương N (ký hiệu là N!) bằng tích của các số tự nhiên từ 1 đến N.
Ví dụ: 4! = 1x2x3x4 = 24
...........6! = 1x2x3x4x5x6 = 720
Yêu cầu: Cho số nguyên dương N. Hãy đếm xem N! có bao nhiêu ước số?
+ Dữ liệu vào: Từ tệp văn bản UOCSO.INP gồm 1 dòng là số nguyên dương N (0<N≤20)
+ Dữ liệu ra: ghi vào tệp văn bản UOCSO.OUT, 1 dòng duy nhất là kết quả cần tìm.
Ví dụ:
UOCSO.INP
......UOCSO.OUT
........4........................8.............

Giải thích: 4!=24, 24 có 8 ước số là: 1, 2, 3, 4, 6, 8, 12, 24.
Giới hạn dữ liệu: Có 60% số điểm ứng với số test có N ≤ 10.


check giùm em bài này

program UOCSO;
var N,i,j,y:longint;
S,T,dem:int64;
A:array[1..1000]of longint;
Function SNT(K:Longint):Boolean;
Var z:longint;
Begin
SNT:=True;
If K<2 then exit(False);
For z:=2 to Trunc(Sqrt(K)) do
If K mod z=0 then
exit(False);
End;
const inp='UOCSO.INP';
out='UOCSO.OUT';
begin
assign(input,inp); reset(input);
assign(output,out); rewrite(output);
readln(N); T:=1;
for i:=1 to N do T:=T*i;
for i:=1 to T do
begin
j:=j+1;
if T mod j=0 then dem:=dem+1;
end;
writeln(dem);
end.
Ở phần mình bôi đỏ ý, tại sao phải tăng j rồi chia mà ko trực tiếp chia cho i là được rồi và còn phần CTC đầu tiên để kt số nguyên tố làm gì vậy bn?Khi xuất và nhập dữ liệu cũng phải thêm input và output, sau khi làm xong phải đóng tệp lại nữa.

VD như này
Mã:
Var
 fi,fo:text;
 i,n,gt,d:integer;
begin
 assign(fi,'uocso.inp');reset(fi);
 assign(fo,'uocso.out');rewrite(fo);
 read(fi,n);gt:=1;
 For i:=1 to n do gt:=gt*i;
 For i:=1 to gt do
  if gt mod i=0 then d:=d+1;
write(fo,d);
Close(fi);Close(fo);
End.
 
Last edited:

H Đ D

Học sinh
Thành viên
2 Tháng bảy 2018
90
82
36
22
Nghệ An
THPT Đô Lương 3
Giai thừa của 1 số nguyên dương N (ký hiệu là N!) bằng tích của các số tự nhiên từ 1 đến N.
Ví dụ: 4! = 1x2x3x4 = 24
...........6! = 1x2x3x4x5x6 = 720
Yêu cầu: Cho số nguyên dương N. Hãy đếm xem N! có bao nhiêu ước số?
+ Dữ liệu vào: Từ tệp văn bản UOCSO.INP gồm 1 dòng là số nguyên dương N (0<N≤20)
+ Dữ liệu ra: ghi vào tệp văn bản UOCSO.OUT, 1 dòng duy nhất là kết quả cần tìm.
Ví dụ:
UOCSO.INP
......UOCSO.OUT
........4........................8.............

Giải thích: 4!=24, 24 có 8 ước số là: 1, 2, 3, 4, 6, 8, 12, 24.
Giới hạn dữ liệu: Có 60% số điểm ứng với số test có N ≤ 10.


check giùm em bài này

program UOCSO;
var N,i,j,y:longint;
S,T,dem:int64;
A:array[1..1000]of longint;
Function SNT(K:Longint):Boolean;
Var z:longint;
Begin
SNT:=True;
If K<2 then exit(False);
For z:=2 to Trunc(Sqrt(K)) do
If K mod z=0 then
exit(False);
End;
const inp='UOCSO.INP';
out='UOCSO.OUT';
begin
assign(input,inp); reset(input);
assign(output,out); rewrite(output);
readln(N); T:=1;
for i:=1 to N do T:=T*i;
for i:=1 to T do
begin
j:=j+1;
if T mod j=0 then dem:=dem+1;
end;
writeln(dem);
end.
.fctbNone{ }
.fctbStyle7{ }
.fctbStyle6{ }
.fctbStyle9{ }
.fctbStyle8{ }
.fctbStyle4{ }
.fctbStyle5{ }
program uocgt;
var f1,f2:text;
i,n:integer;
procedure motep;
begin
assign(f1,'uocso.inp');
reset(f1);
assign(f2,'uocso.out');
rewrite(f2);
read(f1,n);
end;
procedure dongtep;
begin
close(f1);
close(f2);
end;
function gt(n:integer):integer;
begin
gt := 1;
for i := 1 to n do gt:=gt*i;
end;
function dem(n:integer):integer;
begin dem := 1;
for i := 1 to n div 2 do if n mod i=0 then inc(dem);
end;
begin
motep;
write(f2,dem(gt(n)));
dongtep;
end.
 

nguyen tran thanh nha

Học sinh chăm học
Thành viên
10 Tháng sáu 2018
107
53
61
20
Bà Rịa - Vũng Tàu
thcs kim long
theo mình thì nếu đơn giản là tìm giai thừa rồi tìm ước thì không thể tối ưu hóa bài toán được
 

nguyen tran thanh nha

Học sinh chăm học
Thành viên
10 Tháng sáu 2018
107
53
61
20
Bà Rịa - Vũng Tàu
thcs kim long
var n,i,j,m,t:longint;
a:array[1..20]of longint;
f,g:text;
begin
assign(f,'uocso1.inp');reset(f);
assign(g,'uocso1.out');rewrite(g);
read(f,n); t:=1;
for i:=2 to n do
begin
j:=2; m:=i;
while j<=trunc(sqrt(m)) do
if m mod j=0 then
begin
a[j]:=a[j]+1;
m:= m div j;
end
else j:=j+1;
a[m]:=a[m]+1;
end;
for j:=2 to n do if a[j]<>0 then t:= t*(a[j]+1);
write(g,t);
close(f);
close(g);
end.
 
Top Bottom