trang chủ / bài tập / idemfunc

Hàm lũy đẳng

Đề bài

Mô tả

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

Một hàm g:SS được gọi là lũy đẳng (idempotent) nếu với mọi xS 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)f(k)(x)=f(f(k1)(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

  • 1n200
  • 1f(i)n với mọi 1in

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)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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0