[Buổi 8][Củng cố hàm][WS] Bài 1: Number Toolkit 1.0


LÀM BÀI

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

Author:
Problem types
Allowed languages
C++

Number Toolkit 1.0

Bối cảnh

Đây là sản phẩm tổng hợp của Module 02. Bạn cần xây một dịch vụ số học nhỏ có nhiều chức năng nhưng vẫn giữ main() dễ đọc.

Mỗi chức năng phải được đóng gói thành hàm độc lập. Khi một lệnh đến, main() chỉ đọc tham số, gọi hàm và in kết quả. Đây là bài luyện tổ chức code, không chỉ luyện thuật toán.

Yêu cầu

  1. Lệnh 1 a b: in GCD.
  2. Lệnh 2 a b: in LCM.
  3. Lệnh 3 n: in PRIME hoặc NOT PRIME.
  4. Lệnh 4 n: in số lượng ước dương.
  5. Lệnh 5 n: in tổng các ước dương.
  6. Lệnh 6 n: in tổng chữ số của |n|.
  7. Lệnh 7 n: in PERFECT hoặc NOT PERFECT.
  8. Lệnh 0: kết thúc.
  9. Mã khác: in INVALID.

Yêu cầu tổ chức code

Phải tổ chức bằng các hàm độc lập. Không dùng mảng, vector hoặc STL container.

Lưu ý: Online Judge chủ yếu kiểm tra tính đúng của output. Yêu cầu tổ chức code được dùng để rèn đúng kỹ năng của buổi học và sẽ được giảng viên quan sát khi chữa bài.

Input

Nhiều dòng lệnh; dòng cuối là 0.

Output

Mỗi lệnh khác 0 tạo một dòng output.

Ràng buộc

Tối đa 100 lệnh. |a|,|b|,|n| ≤ 10^10; với lệnh 4,5,7: n dương.

Ví dụ 1

Input

0

Output


Giải thích

Không có yêu cầu xử lý trước lệnh 0, nên chương trình không in gì.

Ví dụ 2

Input

1 48 18
2 12 18
0

Output

6
36

Giải thích

Lệnh 1 cho GCD(48,18)=6. Lệnh 2 cho LCM(12,18)=36. Hai kết quả được in trên hai dòng.

Thông tin học tập

  • Module: M02
  • Buổi: B08
  • Loại bài: WORKSHOP
  • Độ khó: Medium
  • Concepts: function decomposition, code reuse, gcd, lcm, primality testing, divisor analysis, command processing
  • Giới hạn kiến thức: B01-B08
  • Time limit: 2 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo