題目連結: https://zerojudge.tw/ShowProblem?problemid=a364
# 內容
N=C (a,3)+C (b,2)+C (c,1),且當 時,,限制,
現在隨便輸入 0~500 隨便一個數,求 abc 的值為何?
# 解題思路
因為數字只到 500 而且又,所以一開始從 a=0 開始下去跑,把所有的 N 值對應的情況直接記錄下來
之後,在依照題目的要求,查表輸出就好哩
# 程式碼
#include <bits/stdc++.h> | |
using namespace std; | |
#define spIO ios_base::sync_with_stdio(false);cin.tie(0) | |
int main(){ | |
int a, b, c, abc[501][3] = {}, ok[501] = {}; | |
for(a = 0; a < 20; a ++) { | |
for(b = 0; b < a; b++) { | |
for(c = 0; c < b; c++) { | |
int N = 0; | |
if(a >= 3) N += a*(a-1)*(a-2)/6; | |
if(b >= 2) N += b*(b-1)/2; | |
if(c >= 1) N += c; | |
if(N > 500) break; | |
if(ok[N] == 0) { | |
ok[N] = 1; | |
abc[N][0] = a, abc[N][1] = b, abc[N][2] = c; | |
} | |
} | |
} | |
} | |
int t,n; | |
cin>>t; | |
for(int i =0;i<t;i++){ | |
cin>>n; | |
cout<<abc[n][0]<<abc[n][1]<<abc[n][2]<<endl; | |
} | |
return 0; | |
} |