結果
問題 | No.316 もっと刺激的なFizzBuzzをください |
ユーザー |
![]() |
提出日時 | 2021-06-26 20:04:45 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 1,000 ms |
コード長 | 1,553 bytes |
コンパイル時間 | 820 ms |
コンパイル使用メモリ | 88,580 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-25 09:19:53 |
合計ジャッジ時間 | 2,067 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 33 |
ソースコード
//https://yukicoder.me/problems/891#include <iostream>#include <vector>#include <algorithm>#include <functional>#include <cmath>#include <map>#include <queue>#include <string>#include <string.h>#define reps(i,s,n) for(int (i) = (s); (i) < (n); (i)++)#define rep(i,n) reps(i,0,n)using namespace std;using ll = long long;using pii = pair<int,int>;using vi = vector<int> ;using vl = vector<ll>;//区間(1,n)においてaの倍数がいくつあるか調べる、ll count(ll n,ll a){return n/a;}ll gcd(ll a,ll b){if(a % b == 0) return b;return gcd(b,a%b);}ll lcm(ll a, ll b){return a*b/gcd(a,b);}int main(){ll n;vector<ll> a(3);cin >> n;//cin >> a >> b >> c;rep(i,3){cin >> a[i];}sort(a.begin(),a.end(),less<ll>());ll ans = 0;ll tmp1,tmp2;if(a[1] % a[0] == 0 && a[2] % a[0] ==0){ans = count(n,a[0]);}else if(a[1] % a[0] == 0){tmp1 = count(n,a[0]) + count(n,a[2]);tmp2 = count(n,lcm(a[0],a[2]));ans = tmp1-tmp2;}else if(a[2] % a[0] == 0 || a[2] % a[1] == 0){tmp1 = count(n,a[0]) + count(n,a[1]);tmp2 = count(n,lcm(a[0],a[1]) );ans = tmp1-tmp2;}else{tmp1 = count(n,a[0]) + count(n,a[1]) + count(n,a[2]);tmp2 = count(n,lcm(a[0],a[1]) ) + count(n,lcm(a[1],a[2])) + count(n,lcm(a[0],a[2]));ll tmp3 = lcm(a[0],a[1]);tmp3 = lcm(tmp3,a[2]);ans = tmp1 - tmp2 + count(n,tmp3);}cout << ans << endl;return 0;}