Editorial for Bedao Mini Contest 06 - INTERNET


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: bedao

Gọi ~D~ là số lượng số ~0~, ~D=S-A-B-C~

Biểu diễn tứ phân của số cần tìm bằng mảng ~a[]~, ví dụ ~25~ thì ~a[]=[1,2,1]~

Với mỗi ~1 \leq i \leq S~ ~div~ ~2~ + ~S~ ~mod~ ~2~, ta có ~j = S - i + 1~, khi đó ~a[i]=a[j]~ (đối xứng). Vì vậy ta cần số lượng số của mỗi chữ số luôn chẵn ~(A~ ~mod~ ~2 + B~ ~mod~ ~2 + C~ ~mod~ ~2 + D~ ~mod~ ~2=0)~, hoặc ~A~, ~B~, ~C~, ~D~ chỉ có một số lẻ khi ~S~ lẻ ~(A~ ~mod~ ~2 + B~ ~mod~ ~2 + C~ ~mod~ ~2 + D~ ~mod~ ~2=1)~ vì trong trường hợp ~S~ lẻ thì sẽ xuất hiện vị trí ~i = j =~ ~S~ ~div~ ~2~ ~+ S~ ~mod~ ~2~

Ta tiến hành xây dựng mảng ~a[]~. Khi đặt tại vị trí ~i~ thì đồng thời đặt luôn vị trí ~j~ tương ứng ~(a[i] = a[j])~ theo thứ tự số bé đặt trước, số lớn đặt sau. Chú ý: tại vị trí ~i=1,j=S~ thì không được đặt số ~0~ vô nghĩa (nếu ~S=1~ thì vẫn có thể đặt ~0~ được).

Sau khi có mảng biểu diễn tứ phân của kết quả, ta chuyển sang hệ thập phân ~ans=\sum_{i=1}^n (a_i*4^{p-1})~

Các bạn nhớ mod ~727355608~ nhé


Comments

Please read the guidelines before commenting.


There are no comments at the moment.