質問: ### 前提・実現したいこと ご覧いただきありがとうございます。 実行時間制限で解けなかった問題でどうしても解法が気になってしまったので、質問さしていただきます。 ・10^18以下の数字l,r(l using namespace std; int main() { long long l,r; cin >> l >> r; long long numbers_number=r-l+1; vector numbers(numbers_number); fill(numbers.begin(), numbers.end(),true); int m; cin >> m; vector n(m); for(int i=0; i> n.at(i); } for(int i=0; ir)break; } } long long result=0; for(int i=0; i
回答: 包除原理を使うのがベターでしょうか。 l~rの範囲で、「いずれかの倍数である数」の個数を数え、全体から引きます。