結果
問題 | No.316 もっと刺激的なFizzBuzzをください |
ユーザー |
![]() |
提出日時 | 2021-06-07 21:22:13 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 1,000 ms |
コード長 | 2,182 bytes |
コンパイル時間 | 2,111 ms |
コンパイル使用メモリ | 199,784 KB |
最終ジャッジ日時 | 2025-01-22 04:49:39 |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 33 |
ソースコード
#include <bits/stdc++.h>// #include <atcoder/all>// using namespace atcoder;#define _overload3(_1,_2,_3,name,...) name#define _rep(i,n) repi(i,0,n)#define repi(i,a,b) for(int i=int(a);i<int(b);++i)#define rep(...) _overload3(__VA_ARGS__,repi,_rep,)(__VA_ARGS__)#define rrep(i,n) for(int i=int(n-1);i>=int(0);--i)#define fore(i,a) for(auto &i:a)#define all(x) x.begin(),x.end()#define sz(x) ((int)(x).size())#define bp(x) (__builtin_popcount((long long)(x)))#define pb push_back#define eb emplace_back#define mp make_pair#define V vector#define P pair<int,int>#define TP tuple<int,int,int>#define F first#define S secondtemplate<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }using ll = long long;using ld = long double;using namespace std;const int INF = 1001001001;const ll INFL = 1001001001001001001;const int MAX = 2e6+1;// a + b がオーバーフローするならtrueを返すtemplate <class T> bool overflow_if_add(T a, T b) {return (std::numeric_limits<T>::max() - a) < b;}// a * b がオーバーフローするならtrueを返すtemplate <class T> bool overflow_if_mul(T a, T b) {return (std::numeric_limits<T>::max() / a) < b;}//最大公約数long long gcd(long long a, long long b){if (a%b == 0){return(b);}else{return(gcd(b, a%b));}}//最小公倍数long long lcm(long long a, long long b){ll g=gcd(a,b);a/=g;if(overflow_if_mul(a,b))return LONG_LONG_MAX;return a * b;}//約数列挙vector<long long> enum_divisors(long long N) {vector<long long> res;for (long long i = 1; i * i <= N; ++i) {if (N % i == 0) {res.push_back(i);// 重複しないならば i の相方である N/i も pushif (N/i != i) res.push_back(N/i);}}// 小さい順に並び替えるsort(res.begin(), res.end());return res;}int main() {ll n,a,b,c;cin>>n>>a>>b>>c;ll ab=lcm(a,b);ll ac=lcm(a,c);ll bc=lcm(b,c);ll abc=lcm(ab,bc);cout<<n/a+n/b+n/c-(n/ab+n/ac+n/bc)+n/abc<<endl;}