Bài tập  /  Bài đang cần trả lời

Tin học - Lớp 9
26/04 09:53:56

Yêu cầu: Bạn hãy giúp Long, liệt kê hết tất cả các ước đặc biệt của số nguyên N. Hơn nữa bạn phải trả lời với Q số nguyên dương N khác nhau

help me
----- Nội dung dịch tự động từ ảnh -----
Long sinh hoạt trong câu lạc bộ ngoại khóa Toán. Mới đây, khi Long được giới thiệu về ướ
số, Long hào hứng lên Internet tìm thêm thông tin về ước số. Một trong những thông tin Long
tìm thấy được là: “Một số nguyên dương x được gọi là ước đặc biệt của N nếu như cả x và
x+1 đều là ước của N”. Long tự hỏi làm thế nào để tìm được ước đặc biệt của số nguyên N?
Yêu cầu: Bạn hãy giúp Long, liệt kê hết tất cả các ước đặc biệt của số nguyên N. Hơn nữa
bạn phải trả lời với Q số nguyên dương N khác nhau.
Dữ liệu: Vào từ file UOCDB.INP:
+ Dòng đầu tiên chứa 1 số nguyên Q(1 + Q dòng tiếp theo, mỗi dòng chứa một số nguyên dương N (N≤1018).
Kết quả: Đưa ra file UOCDB.OUT, gồm Q dòng, mỗi dòng là tập tất cả các ước đặc biệt của
số N theo thứ tự tăng. Nếu không tồn tại ước đặc biệt nào, in ra -1.
1 trả lời
Hỏi chi tiết
44
1
0
Viet
26/04 10:52:06
+5đ tặng
program SpecialDivisors;

var
  Q, i, j: Integer;
  N: Int64;
  
function IsSpecialDivisor(x, N: Int64): Boolean;
begin
  IsSpecialDivisor := (N mod x = 0) and ((N mod (x + 1)) = 0);
end;

procedure FindSpecialDivisors(N: Int64);
var
  x: Int64;
  hasSpecialDivisor: Boolean;
begin
  hasSpecialDivisor := False;
  for x := 1 to Trunc(Sqrt(N)) do
  begin
    if IsSpecialDivisor(x, N) then
    begin
      Write(x, ' ');
      hasSpecialDivisor := True;
    end;
  end;
  
  if hasSpecialDivisor = False then
    Write('-1');
end;

begin
  Assign(input, 'UOCDB.INP');
  Reset(input);
  Assign(output, 'UOCDB.OUT');
  Rewrite(output);
  
  ReadLn(Q);
  for i := 1 to Q do
  begin
    ReadLn(N);
    FindSpecialDivisors(N);
    WriteLn;
  end;
  
  Close(input);
  Close(output);
end.
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng ký tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng bạn bè học sinh cả nước, đến LAZI, sôi động, tích cực, trải nghiệm
Câu hỏi Tin học mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Gia sư Lazi Gia sư
×
Trợ lý ảo Trợ lý ảo