QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#397986#3751. 组合数SamponYW#AC ✓66ms3948kbC++141.2kb2024-04-24 21:00:342024-04-24 21:00:34

Judging History

你现在查看的是最新测评结果

  • [2024-04-24 21:00:34]
  • 评测
  • 测评结果:AC
  • 用时:66ms
  • 内存:3948kb
  • [2024-04-24 21:00:34]
  • 提交

answer

#include <bits/stdc++.h>
#define db double
#define il inline
#define re register
#define ll long long
#define ui unsigned
#define ull ui ll
#define i128 __int128
#define pii pair<int, int>
#define fi first
#define se second
#define eb emplace_back
#define SZ(v) (int)v.size()
#define ALL(v) v.begin(), v.end()
#define mems(v, x) memset(v, x, sizeof(v))
#define memc(a, b) memcpy(a, b, sizeof(a))
#define FOR(i, L, R) for(re int i = (L); i <= (R); ++i)
#define ROF(i, R, L) for(re int i = (R); i >= (L); --i)
#define LS i << 1, l, mid
#define RS i << 1 | 1, mid + 1, r
#define popc(x) __builtin_popcount(x)
using namespace std;
#define N 20005
#define M 2019
const ll INF = 1e18;
ll n, m;
il void WORK() {
  m = min(m, n - m);
  if(m > 40) {cout << INF << "\n"; return ;}
  vector<ll> s;
  FOR(i, 0, m - 1) s.eb(n - i);
  FOR(i, 1, m) {
    ll k = i;
    for(auto &x : s) {
      ll g = __gcd(x, k);
      x /= g, k /= g;
    }
  }
  ll ans = 1;
  for(auto x : s) if(ans > (INF / x)) ans = INF; else ans *= x;
  cout << ans << "\n";
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  while(cin >> n >> m) WORK();
  cerr << 1.0 * clock() / CLOCKS_PER_SEC;
  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 66ms
memory: 3948kb

input:

1 0
1 1
2 0
2 1
2 2
3 0
3 1
3 2
3 3
4 0
4 1
4 2
4 3
4 4
5 0
5 1
5 2
5 3
5 4
5 5
6 0
6 1
6 2
6 3
6 4
6 5
6 6
7 0
7 1
7 2
7 3
7 4
7 5
7 6
7 7
8 0
8 1
8 2
8 3
8 4
8 5
8 6
8 7
8 8
9 0
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 9
10 0
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9
10 10
11 0
11 1
11 2
11 3
11 4
11 ...

output:

1
1
1
2
1
1
3
3
1
1
4
6
4
1
1
5
10
10
5
1
1
6
15
20
15
6
1
1
7
21
35
35
21
7
1
1
8
28
56
70
56
28
8
1
1
9
36
84
126
126
84
36
9
1
1
10
45
120
210
252
210
120
45
10
1
1
11
55
165
330
462
462
330
165
55
11
1
1
12
66
220
495
792
924
792
495
220
66
12
1
1
13
78
286
715
1287
1716
1716
1287
715
286
78
13
...

result:

ok 100000 tokens