CSES - Divisor Analysis | Phân tích ước số

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1600 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cho một số nguyên, nhiệm vụ của bạn là tìm số lượng, tổng và tích của các ước số của nó. Ví dụ, chúng ta hãy xem xét số \(12\):

  • số lượng ước số là \(6\) (chúng là \(1, 2, 3, 4, 6, 12\))
  • tổng của các ước số là \(1 + 2 + 3 + 4 + 6 + 12 = 28\)
  • tích của các ước số là \(1 \cdot 2 \cdot 3 \cdot 4 \cdot 6 \cdot 12 = 1728\)

Vì số đầu vào có thể rất lớn, nó sẽ được cho dưới dạng phân tích thừa số nguyên tố.

Input

  • Dòng đầu tiên có một số nguyên \(n\): số phần trong dạng phân tích thừa số nguyên tố
  • Sau đó, gồm \(n\) dòng mô tả dạng phân tích. Mỗi dòng có hai số \(x\)\(k\), trong đó \(x\) là số nguyên tố và \(k\) là lũy thừa của nó

Constraints

  • \(1 \leq n \leq 10^5\)
  • \(2 \leq x \leq 10^6\)
  • Mỗi \(x\) là một số nguyên tố riêng biệt
  • \(1 \leq k \leq 10^9\)

Output

  • In ba số nguyên chia lấy dư cho \(10^9 + 7\): số lượng, tổng và tích của các ước số

Example

Test 1

Input
2
2 2
3 1
Output
6 28 1728
Note

Số được cho là \(12 = 2^2 \cdot 3^1\). Các ước số của nó là \(1, 2, 3, 4, 6, 12\).

  • Số lượng ước số: \(6\)
  • Tổng các ước số: \(1 + 2 + 3 + 4 + 6 + 12 = 28\)
  • Tích các ước số: \(1 \cdot 2 \cdot 3 \cdot 4 \cdot 6 \cdot 12 = 1728\)

Bình luận (5)

Mới nhất
Tải bình luận...