題目連結: https://zerojudge.tw/ShowProblem?problemid=a364

# 內容

N=C (a,3)+C (b,2)+C (c,1),且當m<nm<n 時,C(m,n)=0C(m,n)=0,限制a>b>c>=0a>b>c>=0
現在隨便輸入 0~500 隨便一個數,求 abc 的值為何?

# 解題思路

因為數字只到 500 而且又a>b>c>=0a>b>c>=0,所以一開始從 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;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay