Tin học Pascal đội tuyển!

02-07-2019.

Học sinh tiến bộ
HV CLB Lịch sử
Thành viên
4 Tháng năm 2018
1,485
1,656
236
Vĩnh Phúc
Trung học cơ sở Lập Thạch
[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.

Đề: hai số tự nhiên a,b được gọi là hữu nghị nếu như số này bằng tổng các ước nguyên dương của số kia ( ước không kể chính nó) và ngược lại. Hãy tìm tất cả các cặp số từ 2 đến N thỏa mãn điều kiện a<=b . Có bao nhiêu cặp như vậy?

Mã:
Function tu(x:int64):int64;
var i,dk:longint;
Begin
    tu:=1;
    dk:=trunc(sqrt(x));
    For i:=2 to dk do
      Begin
        If (x mod i=0) then
        tu:=tu+i+(x mod i);
      End;
    If (frac(sqrt(x))=0) then tu:=tu-dk;
exit(tu);
End;
Var i,n,x:longint;
    dem:int64;
Begin
    Assign(input,'huunghi.inp');reset(input);
    Assign(output,'huunghi.out');rewrite(output);
    Read(n);
    dem:=0;
    For i:=2 to n do
       Begin
           x:=tu(i);
           If (tu(x)=i) then
           dem:=dem+1;
       End;
       Write(dem);
End.
Mọi người sửa code giúp em xem sao ( dem luôn ra 0 ạ?)
Cảm ơn!
 

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
216
18
Quảng Trị
Trường TH&THCS Hải Ba
Đề: hai số tự nhiên a,b được gọi là hữu nghị nếu như số này bằng tổng các ước nguyên dương của số kia ( ước không kể chính nó) và ngược lại. Hãy tìm tất cả các cặp số từ 2 đến N thỏa mãn điều kiện a<=b . Có bao nhiêu cặp như vậy?

Mã:
Function tu(x:int64):int64;
var i,dk:longint;
Begin
    tu:=1;
    dk:=trunc(sqrt(x));
    For i:=2 to dk do
      Begin
        If (x mod i=0) then
        tu:=tu+i+(x mod i);
      End;
    If (frac(sqrt(x))=0) then tu:=tu-dk;
exit(tu);
End;
Var i,n,x:longint;
    dem:int64;
Begin
    Assign(input,'huunghi.inp');reset(input);
    Assign(output,'huunghi.out');rewrite(output);
    Read(n);
    dem:=0;
    For i:=2 to n do
       Begin
           x:=tu(i);
           If (tu(x)=i) then
           dem:=dem+1;
       End;
       Write(dem);
End.
Mọi người sửa code giúp em xem sao ( dem luôn ra 0 ạ?)
Cảm ơn!
Bạn có thể tham khảo code sau:
Mã:
Var
       i,j,n,d:integer;
       Fi,fo:Text;
       Function uoc(var a:integer):Integer;
       Var
           k,t:integer;
       Begin
           t:=0;
           For k:=1 to a div 2  do
                if a mod k=0 then t:=t+k;
           uoc:=t;
       end;
Begin
        Assign(fi,'huunghi.inp');reset(fi);
        Assign(fo,'huunghi.out');rewrite(fo);
        Readln(fi,n);
        For i:=2 to n do
        Begin
             j:=uoc(i);
             if (j>i) and (uoc(j)=i) then d:=d+1;
        end;
        Write(fo,d);
     readln
End.
Còn sửa code thì có thể chạy từng dòng lệnh bằng F7 để phát hiện từng lỗi, mặc dù hơi lâu :)
 

Deathheart

Cựu TMod Vật Lí
Thành viên
18 Tháng năm 2018
1,535
2,868
411
Quảng Trị
THPT Đông Hà
Đề: hai số tự nhiên a,b được gọi là hữu nghị nếu như số này bằng tổng các ước nguyên dương của số kia ( ước không kể chính nó) và ngược lại. Hãy tìm tất cả các cặp số từ 2 đến N thỏa mãn điều kiện a<=b . Có bao nhiêu cặp như vậy?

Mã:
Function tu(x:int64):int64;
var i,dk:longint;
Begin
    tu:=1;
    dk:=trunc(sqrt(x));
    For i:=2 to dk do
      Begin
        If (x mod i=0) then
        tu:=tu+i+(x mod i);
      End;
    If (frac(sqrt(x))=0) then tu:=tu-dk;
exit(tu);
End;
Var i,n,x:longint;
    dem:int64;
Begin
    Assign(input,'huunghi.inp');reset(input);
    Assign(output,'huunghi.out');rewrite(output);
    Read(n);
    dem:=0;
    For i:=2 to n do
       Begin
           x:=tu(i);
           If (tu(x)=i) then
           dem:=dem+1;
       End;
       Write(dem);
End.
Mọi người sửa code giúp em xem sao ( dem luôn ra 0 ạ?)
Cảm ơn!
Bạn mở file mà chưa đóng file kìa
 

bùi thị xuân mai

Học sinh
Thành viên
28 Tháng bảy 2019
42
13
31
18
Quảng Nam
thcs võ thị sáu
cái đọc file bạn sai rồi cái read(n) ý phải là read(f1,n) mới đúng :) chắc đó là lí do với lại bạn quên đóng file
 
Top Bottom