Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ นับจำนวน dodecagons ที่เราสร้างได้ขนาด d


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

โปรแกรม C++ นับจำนวน dodecagons ที่เราสร้างได้ขนาด d

ขั้นตอน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้-

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