สมมติว่าเรามีตัวเลข d พิจารณาว่ามีจำนวนไม่สิ้นสุดของแผ่นสี่เหลี่ยมจัตุรัสและกระเบื้องสามเหลี่ยมปกติที่มีความยาวด้าน 1 เราต้องค้นหาว่าเราสามารถสร้างรูปหลายเหลี่ยมปกติ (รูปหลายเหลี่ยม 12 ด้าน) ที่มีด้าน d โดยใช้กระเบื้องเหล่านี้ได้หลายวิธี หากคำตอบมีขนาดใหญ่เกินไป ให้คืนค่า mod ผลลัพธ์ 998244353

ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้-
b := floor of d/2 - 1 c := 1 for initialize i := 2, when i < d, update (increase i by 1), do: b := b * (floor of d/2) c := c * i return (b / c)
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h>
using namespace std;
int solve(int d){
int b = ((d << 1) - 1);
int c = 1;
for (int i = 2; i < d; i++){
b *= (d << 1) - i;
c *= i;
}
return (b / c);
}
int main(){
int d = 1;
cout << solve(d) << endl;
} อินพุต
1
ผลลัพธ์
1