trang chủ / đề bài / idemfunc

Hàm lũy đẳng

Đề bài

Mô tả

Cho tập S={1,2,…,n} và một hàm f:S→S, được mô tả bởi dãy f(1),f(2),…,f(n).

Một hàm g:S→S được gọi là lũy đẳng (idempotent) nếu với mọi x∈S ta có g(g(x))=g(x).

Ký hiệu f(k) là hàm f được áp dụng k lần: f(1)(x)=f(x) và f(k)(x)=f(f(k−1)(x)) với mọi k>1.

Hãy tìm số nguyên dương k nhỏ nhất sao cho f(k) là hàm lũy đẳng.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: kích thước tập xác định của f.
  • Dòng thứ hai chứa n số nguyên f(1),f(2),…,f(n).

Dữ liệu ra

Một số nguyên duy nhất: giá trị k nhỏ nhất thỏa mãn.

Ràng buộc

  • 1≤n≤200
  • 1≤f(i)≤n với mọi 1≤i≤n

Ví dụ

Input Output Giải thích
4
1 2 2 4
1 Bản thân f đã lũy đẳng: f(f(1))=f(1)=1, f(f(2))=f(2)=2, f(f(3))=f(3)=2, f(f(4))=f(4)=4.
3
2 3 3
2 f chưa lũy đẳng vì f(f(1))=3 nhưng f(1)=2. Với k=2 thì f(2)(x)=3 với mọi x, nên f(2)(f(2)(x))=3=f(2)(x).
3
2 3 1
3 f(1) và f(2) đều chưa lũy đẳng (chẳng hạn f(2)(f(2)(1))=2 nhưng f(2)(1)=3). Còn f(3) là hàm đồng nhất nên lũy đẳng.

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