阿里9.4编程第一题,排列组合,只AC了0.9,请各位大佬帮忙看看什么问题
#include <bits/stdc++.h> using namespace std; long long c(int n, int k){ long long tmp = 1; for (int i = 0; i < k; ++i) { tmp *= n-i; tmp /= i+1; } return tmp; } int main() { // ios::sync_with_stdio(false); // cin.tie(nullptr); // cout.tie(nullptr); int n; cin>>n; vector<int> a(4); for (int i = 0; i < 4; ++i) { cin>>a[i]; } sort(a.begin(), a.end()); long long res = 1; long long t, tmp = n*n; for (int i = 0; i < 3; ++i) { if(a[i] > 0){ t = c(tmp, a[i]); if(t > 998244353) t %= 998244353; res *= t; tmp -= a[i]; if(res > 998244353) res %= 998244353; } } cout<<res<<endl; return 0; }
全部评论
(4) 回帖