Lặp hàm Phi Euler

Đề bài

Mô tả

Cho số nguyên dương n được biểu diễn dưới dạng phân tích thừa số nguyên tố: n=p1a1·p2a2·…·pmam.

Hàm phi Euler φ(n) đếm số lượng số nguyên dương không vượt quá n và nguyên tố cùng nhau với n.

Cho số nguyên dương k, hãy tính φ(k)(n)=φ(φ(…φ(n)…)) (hàm φ được áp dụng k lần).

Kết quả cần được biểu diễn dưới dạng phân tích thừa số nguyên tố.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên m - số lượng ước nguyên tố phân biệt của n.
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên pi và ai - một ước nguyên tố và số mũ của nó. Các ước nguyên tố được liệt kê theo thứ tự tăng dần.
  • Dòng cuối cùng chứa số nguyên k - số lần áp dụng hàm φ.

Dữ liệu ra

  • Dòng đầu tiên in số w - số lượng ước nguyên tố phân biệt của kết quả.
  • w dòng tiếp theo, mỗi dòng in hai số nguyên qi và bi - ước nguyên tố và số mũ của nó trong kết quả (theo thứ tự tăng dần của qi, với bi≥1).

Ràng buộc

  • 1≤m≤105
  • 2≤pi≤106
  • 1≤ai≤1017
  • Tổng các ai không vượt quá 1017
  • 1≤k≤1018

Ví dụ

Input Output Giải thích
1
7 1
1
2
2 1
3 1
n=7, φ(7)=6=2·3
1
7 1
2
1
2 1
n=7, φ(φ(7))=φ(6)=2
1
2 100000000000000000
10000000000000000
1
2 90000000000000000
n=21017, sau 1016 lần áp dụng φ, số mũ của 2 giảm đi 1016

Ghi chú

Tham khảo về phân tích thừa số nguyên tố và hàm phi Euler trên Wikipedia.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0