結果
| 問題 | No.316 もっと刺激的なFizzBuzzをください |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-01-25 14:45:01 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,827 bytes |
| 記録 | |
| コンパイル時間 | 562 ms |
| コンパイル使用メモリ | 60,112 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-21 16:12:09 |
| 合計ジャッジ時間 | 1,743 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 28 WA * 5 |
ソースコード
#include <iostream>
#include <algorithm>
long long f(long long n1, long long n2)
{
long long wk1 = n1;
long long wk2 = n2;
while (1) {
if (wk1 == wk2) {
break;
}
if (wk1 < wk2) {
wk1 += n1;
}
else {
wk2 += n2;
}
}
return wk1;
}
int main()
{
long long N;
long long n[3] = {0};
long long cnt = 0;
long long d[6] = {0};
std::cin >> N;
std::cin >> n[0];
std::cin >> n[1];
std::cin >> n[2];
std::sort(&n[0], &n[3]);
for (int i = 0; i < 3; i++) {
if (n[i] == 0) {
std::cout << -1 << std::endl;
return 0;
}
if (n[i] == 1) {
std::cout << N << std::endl;
return 0;
}
}
cnt += N / n[0];
cnt += N / n[2];
cnt += N / n[1];
d[0] = n[0];
d[1] = n[1];
d[2] = n[2];
while (1) {
if (d[0] > N && d[1] > N && d[2] > N) {
break;
}
if (d[0] == d[1] &&
d[1] == d[2] &&
d[2] == d[0]) {
break;
}
d[3] = f(d[0], d[1]);
if (d[3] < N) {
cnt -= N / d[3];
}
d[4] = f(d[1], d[2]);
if (d[4] < N && d[3] != d[4]) {
cnt -= N / d[4];
}
d[5] = f(d[2], d[0]);
if (d[5] < N && d[3] != d[5] && d[4] != d[5]) {
cnt -= N / d[5];
}
d[0] = f(d[3], d[4]);
if (d[0] < N) {
cnt += N / d[0];
}
d[1] = f(d[4], d[5]);
if (d[1] < N && d[0] != d[1]) {
cnt += N / d[1];
}
d[2] = f(d[5], d[3]);
if (d[2] < N && d[0] != d[2] && d[1] != d[2]) {
cnt += N / d[2];
}
}
std::cout << cnt << std::endl;
return 0;
}