結果
問題 |
No.1809 Divide NCK
|
ユーザー |
![]() |
提出日時 | 2022-01-14 21:33:52 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 33 ms / 2,000 ms |
コード長 | 701 bytes |
コンパイル時間 | 1,917 ms |
コンパイル使用メモリ | 198,664 KB |
最終ジャッジ日時 | 2025-01-27 11:03:44 |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 39 |
ソースコード
#include<bits/stdc++.h> using namespace std; int main() { long long N,K,M; cin >> N >> K >> M; map<long long,int>mp; for(long long i = 2; i*i <= M; i++) { while (M%i == 0) { M /= i; mp[i]++; } } if(M != 1) { mp[M]++; } long long ans = 1001001001001001001; for(auto i:mp) { long long tmp = i.first,sum = 0; while (true) { sum += N/tmp-(N-K)/tmp; sum -= K/tmp; if(N/i.first >= tmp) { tmp *= i.first; } else { break; } } ans = min(ans,sum/i.second); } cout << ans << endl; }