Trang chủ Tin Học Lớp 8 Bài 3. Số thân thiết (5 điểm) Giữa bạn bè...

Bài 3. Số thân thiết (5 điểm) Giữa bạn bè với nhau có tình hữu nghị và bạn có biết rằng giữa các con số với nhau cũng có "sự thân thiết". Một nhà toán học từn

Câu hỏi :

Bài 3. Số thân thiết (5 điểm) Giữa bạn bè với nhau có tình hữu nghị và bạn có biết rằng giữa các con số với nhau cũng có "sự thân thiết". Một nhà toán học từng nói: "Ai là bạn tốt của tôi thì chúng tôi sẽ giống như hai con số 220 và 284". Vậy tại sao 220 và 284 lại tượng trưng cho những người bạn thân thiết? Thì ra, 220 ngoài bản thân nó ra còn có 11 ước số khác là 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 và 110. Tổng của 11 ước số này vừa đúng bằng 284. Cũng vậy, 284 ngoài bản thân nó còn có 5 ước số khác là: 1, 2, 4, 71, 142, tổng của chúng cũng vừa đúng bằng 220. Hai số này, trong anh có tôi, trong tôi có anh, gắn bó thân thiết, không tách rời nhau. Các nhà toán học cổ Hy Lạp gọi những cặp số có tính chất như vậy là "số thân thiết". Yêu cầu: Hãy tìm cặp “số thân thiết” trong đoạn M, N. Nếu không có cặp số nào thì ghi -1. Dữ liệu vào: File văn bản FRIEND.INP gồm hai số nguyên dương M, N (M <N) các số cách nhau bởi dấu cách. Dữ liệu ra: Ghi ra file văn bản FRIEND.OUT - Có thể có nhiều dòng, mỗi dòng là một cặp “số thân thiết” mỗi số trong cặp cách nhau ít nhất một dấu cách. - Trường hợp không tìm ra cặp nào trong đoạn M, N thì ghi -1. Ví dụ: FRIEND.INP 1 1500 FRIEND.OUT 220 284 1184 1210 Ràng buộc: • Có 50% số test ứng với 50% số điểm có M, N ≤ 2x103; • Có 50% số test còn lại ứng với 50% số điểm có M, N ≤ 15x103.

Lời giải 1 :

var a,b:array[0..10000007] of int64;
function uoc(n:longint):int64;
var t,i:longint;
begin
t:=1;
for i := 2 to trunc(sqrt(n)) do
 if n mod i = 0 then
  if i <> n div i then t := t + i + n div i
   else t:=t+i;
  exit(t);
end;
var l,r,i,j,cnt:longint;
begin
assign(input,'friend.inp');reset(input);
assign(output,'friend.out');rewrite(output);
 readln(l,r);
cnt := 0;
for i := l to r do
begin
 j := uoc(i);
 if (uoc(j)=i) and (j>=i) and (j<=r) and (i <> j) then
    begin
      inc(cnt);
      a[cnt] := i;
      b[cnt] := j;
    end;
end;
if cnt=0 then
  begin
    writeln(-1);
    exit;
  end;
for i := 1 to cnt do
write(a[i],#32,b[i],#13#10);
close(input);close(output);
end.


Thảo luận

-- bn cho mk xin thuật vs bn ơi
-- mk chưa hiểu lắm ý bạn

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần, sang năm lại là năm cuối cấp áp lực lớn dần nhưng các em vẫn phải chú ý sức khỏe nhé!

Nguồn : ADMIN :))

Copyright © 2021 HOCTAP247