สมมติว่าเรามีตัวเลข 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