[Buổi 10][Đệ quy & Ngăn xếp lời gọi][HW] Bài 1: Nhật ký lời gọi Euclid


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types

Nhật ký lời gọi Euclid

Bối cảnh và bài toán

Một bộ chẩn đoán chạy thuật toán Euclid theo dạng đệ quy gcd(a,b) -> gcd(b,a mod b) và muốn ghi nhận độ sâu xử lý. Mỗi lần hàm được gọi, kể cả lời gọi cuối cùng khi b=0, bộ đếm tăng thêm một.

Yêu cầu

Tính gcd(a,b) và tổng số lần hàm đệ quy được gọi theo đúng quy tắc trên.

Input

  • Một dòng chứa hai số nguyên không âm a b, không đồng thời bằng 0.

Output

In gcd(a,b) và số lời gọi, cách nhau bởi một dấu cách.

Ràng buộc

  • 0 <= a, b <= 10^18
  • a + b > 0

Chấm điểm

Subtask Điểm Điều kiện Official tests
S1 30% a, b ≤ 10^4 01–03
S2 30% a, b ≤ 10^12 04–06
S3 40% Không có ràng buộc bổ sung 07–10

Ví dụ 1

Input

48 18

Output

6 4

Giải thích. Các lời gọi là (48,18) -> (18,12) -> (12,6) -> (6,0).

Ví dụ 2

Input

10 0

Output

10 1

Giải thích. Lời gọi đầu tiên đã chạm base case.

Thông tin bài tập

Thuộc tính Giá trị
Mã bài DSA-M04-B10-HW01
Buổi B10
Loại bài HOMEWORK
Mức độ khó Dễ (Easy)
Thời gian làm bài khuyến nghị 20 phút
Time limit 1 giây
Memory limit 256 MB
Tổng điểm 100
Chuẩn ngôn ngữ tham chiếu C++11 trở lên

Nguồn: FULLHOUSE DEV – Self-generated.


Comments

There are no comments at the moment.

Zalo