結果
| 問題 | No.316 もっと刺激的なFizzBuzzをください |
| コンテスト | |
| ユーザー |
tsuchinaga
|
| 提出日時 | 2019-04-11 17:52:58 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 856 bytes |
| コンパイル時間 | 14,498 ms |
| コンパイル使用メモリ | 220,360 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-19 03:44:38 |
| 合計ジャッジ時間 | 13,595 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 30 WA * 3 |
ソースコード
package main
import "fmt"
func main() {
var n, a, b, c int
_, _ = fmt.Scan(&n, &a, &b, &c)
// n倍の関係なら小さい方で十分なので、大きい方には消えていただく
if c%a == 0 || c%b == 0 {
c = 0
}
if b%a == 0 {
b = 0
}
// 登場回数をカウント
ans := 0
ans += n / a
if b > 0 {
ans += n / b
}
if c > 0 {
ans += n / c
}
// 各組合せでの重複数を減らす
if b > 0 {
// aとb
ans -= n / ((a * b) / euclid316(a, b))
}
if c > 0 {
// aとc
ans -= n / ((a * c) / euclid316(a, c))
}
if b > 0 && c > 0 {
// bとc
ans -= n / ((b * c) / euclid316(b, c))
// 減らしすぎたのを増やす
ans += n / ((a * b * c) / euclid316(euclid316(a, b), c))
}
fmt.Println(ans)
}
// 最大公約数
func euclid316(a, b int) int {
if a%b == 0 {
return b
}
return euclid316(b, a%b)
}
tsuchinaga