#include <iostream>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int T,N;
cin >> T;
int board[1002];
for(int i=1;i<=1000;i++) board[i] = i*(i+1)/2;
while(T--)
{
cin >> N;
for(int i=1;i<=51;i++)
{
for(int j=i;j<=51;j++)
{
for(int q=j;q<=51;q++)
{
int sum = board[i] + board[j] + board[q];
if(sum == N){
cout << 1 <<'\n';
goto stop;
}
}
}
}
cout << 0 <<'\n';
stop:;
}
return 0;
}
- key point!
: board[51]
은 최대입력인 1000
보다 크니까 전체범위를 51로 해도 충분함! (시간이 엄청 단축된다)
- goto사용
: 적절하게 goto를 사용하면 다중 중첩 반복문에서 flag가 없어도된다