結果
| 問題 |
No.889 素数!
|
| コンテスト | |
| ユーザー |
kat0rik
|
| 提出日時 | 2019-09-21 01:33:21 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,311 bytes |
| コンパイル時間 | 14,219 ms |
| コンパイル使用メモリ | 231,656 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-09-15 07:03:11 |
| 合計ジャッジ時間 | 16,045 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 60 WA * 1 |
ソースコード
package main
import "fmt"
func divisors(n int) (r []int) {
r = make([]int, 0)
for i := 1; i*i <= n; i++ {
if n%i == 0 {
r = append(r, i)
if i*i != n {
r = append(r, n/i)
}
}
}
return r
}
func primeNum(N int) []bool {
r := make([]bool, N+1)
for i := range r {
r[i] = true
}
r[0] = false
r[1] = false
for i := 2; i*i <= N; i++ {
for j := i * 2; j <= N; j += i {
if r[j] {
r[j] = false
}
}
}
return r
}
func isPrime(N int) bool {
primes := primeNum(N)
// fmt.Println("isPrime - primes", primes)
if primes[N] {
return true
}
return false
}
func isHeihosu(N int) bool {
for i := 1; i*i <= N; i++ {
if i*i == N {
return true
}
}
return false
}
func isRipposu(N int) bool {
for i := 1; i*i*i <= N; i++ {
if i*i*i == N {
return true
}
}
return false
}
func isKanzensu(N int) bool {
divs := divisors(N)
tot := 0
for _, v := range divs {
if v != N {
tot += v
}
}
if tot == N {
return true
}
return false
}
func main() {
var N int
fmt.Scan(&N)
ans := ""
if N == 0 {
fmt.Println(0)
return
}
if isPrime(N) {
ans = "Sosu!"
} else if isHeihosu(N) {
ans = "Heihosu!"
} else if isRipposu(N) {
ans = "Ripposu!"
} else if isKanzensu(N) {
ans = "Kanzensu!"
} else {
fmt.Println(N)
return
}
fmt.Println(ans)
}
kat0rik