Tháp Đỏ-Xanh

Đề bài

Mô tả

Bạn có r khối màu đỏ và g khối màu xanh để xây một tòa tháp đỏ-xanh theo các quy tắc sau:

  • Tháp gồm một số tầng.
  • Nếu tháp có n tầng thì tầng thứ nhất gồm n khối, tầng thứ hai gồm n−1 khối, ..., tầng cuối cùng gồm đúng 1 khối. Nói cách khác, mỗi tầng có ít hơn tầng ngay trên nó (tính từ dưới lên) đúng một khối.
  • Mỗi tầng chỉ được dùng các khối cùng một màu.

Gọi h là số tầng lớn nhất có thể của một tòa tháp xây được từ r khối đỏ và g khối xanh thỏa các quy tắc trên. Nhiệm vụ của bạn là đếm số tòa tháp khác nhau có đúng h tầng có thể xây được.

Hai tòa tháp được coi là khác nhau nếu tồn tại một tầng mà ở tháp này gồm các khối đỏ còn ở tháp kia gồm các khối xanh.

Hãy in ra số tòa tháp khác nhau có đúng h tầng theo modulo 109+7.

Dữ liệu vào

Một dòng duy nhất chứa hai số nguyên r và g — số khối đỏ và số khối xanh.

Dữ liệu ra

In ra một số nguyên duy nhất — số tòa tháp khác nhau có đúng h tầng, theo modulo 109+7.

Ràng buộc

  • 0≤r,g≤2·105
  • r+g≥1

Ví dụ

Input Output Giải thích
4 6 2 Số tầng tối đa là h=4 (cần 1+2+3+4=10 khối, vừa đủ r+g=10). Tầng cỡ 4 phải là xanh (chỉ có 4 đỏ). Phần còn lại cần tô màu cho các tầng 1,2,3 sao cho dùng đúng 4 đỏ: hoặc tầng cỡ 4... thực chất có đúng 2 cách hợp lệ.
9 7 6 Số tầng tối đa h=5 (cần 15 khối, có 16). Có 6 cách phân màu hợp lệ.
1 1 2 h=1: tháp một tầng cỡ 1, có thể là đỏ hoặc xanh, tổng cộng 2 cách.

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