สมมติว่าเรามีตัวเลข n เราต้องเช็คว่าเป็นเลขสามเหลี่ยมหรือไม่ ดังที่เราทราบ หาก n จุด (หรือลูกบอล) สามารถจัดเรียงเป็นชั้นๆ เพื่อสร้างสามเหลี่ยมด้านเท่าได้ n จะเป็นจำนวนสามเหลี่ยม
ดังนั้นหากอินพุตเท่ากับ n =10 เอาต์พุตจะเป็น True
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
for initialize i := 1, when i <= n, update (increase i by 1), do: if i * (i + 1) is same as 2 * n, then: return true return false
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; bool solve(int n){ for (int i = 1; i <= n; i++){ if (i * (i + 1) == 2 * n){ return true; } } return false; } int main(){ int n = 10; cout << solve(n) << endl; }
อินพุต
10
ผลลัพธ์
1