Hàm $f$ của Vasya

Đề bài

Mô tả

Cho hàm hai biến f(a,b) trên các số nguyên không âm, định nghĩa đệ quy như sau:

  • f(a,0)=0;
  • f(a,b)=1+f(a,bgcd(a,b)) nếu b>0, trong đó gcd(a,b) là ước chung lớn nhất của ab.

Cho hai số nguyên dương xy. Hãy tính f(x,y).

Vì giá trị của f(x,y) có thể rất lớn nên tính trực tiếp theo định nghĩa sẽ không khả thi. Bạn cần một thuật toán nhanh hơn.

Dữ liệu vào

Một dòng duy nhất chứa hai số nguyên xy (1x,y1012).

Dữ liệu ra

In ra một số nguyên là giá trị f(x,y).

Ràng buộc

  • 1x,y1012.

Ví dụ

Input Output Giải thích
3 5 3 f(3,5)=1+f(3,4)=2+f(3,3)=3+f(3,0)=3. Mỗi bước đầu trừ gcd(3,b)=1 rồi bước cuối trừ gcd(3,3)=3.
6 3 1 gcd(6,3)=3 nên một bước duy nhất đưa b về 0: f(6,3)=1+f(6,0)=1.
100000000000 100000000000 1 Khi x=y thì gcd(x,y)=x, nên chỉ cần đúng một bước.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0