Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một số có thể được biểu diễn dưới dạng tổng của 2 số tam giác trong C ++ hay không

Trong phần này, chúng ta sẽ xem liệu chúng ta có thể biểu thị một số dưới dạng tổng của hai số tam giác hay không. Các số hình tam giác như dưới đây -

Kiểm tra xem một số có thể được biểu diễn dưới dạng tổng của 2 số tam giác trong C ++ hay không

Từ ví dụ này, chúng ta có thể thấy rằng 1, 3, 6, 10 là một số hình tam giác. Chúng ta cần biểu diễn một số N (chẳng hạn 16) dưới dạng tổng của hai số tam giác (6, 10).

Cách tiếp cận rất đơn giản. Chúng ta phải nhận tất cả các số tam giác nhỏ hơn N. Lập một tập hợp từ các giá trị này. Bây giờ chúng ta phải lấy một số như X từ tập hợp và kiểm tra xem N - X có trong tập hợp hay không, khi đó X có thể được biểu diễn dưới dạng tổng của hai số tam giác.

Ví dụ

#include <iostream>
#include <set>
using namespace std;
bool isSumTriangularNum(int n) {
   set<int> s;
   int i = 1;
   while (1) { //find and store all triangular numbers below n, and store into set
      int x = i * (i + 1) / 2;
      if (x >= n)
         break;
      s.insert(x);
      i++;
   }
   for (auto x : s)
   if (s.find(n - x) != s.end())
   return true;
   return false;
}
int main() {
   int num = 16;
   if(isSumTriangularNum(num)){
      cout << "Can be represented";
   }else{
      cout << "Cannot be represented";
   }
}

Đầu ra

Can be represented