結果
| 問題 |
No.237 作図可能性
|
| コンテスト | |
| ユーザー |
tsuchinaga
|
| 提出日時 | 2019-04-18 09:00:08 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 835 bytes |
| コンパイル時間 | 12,027 ms |
| コンパイル使用メモリ | 218,808 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-22 08:46:14 |
| 合計ジャッジ時間 | 13,116 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 28 |
ソースコード
package main
import (
"fmt"
"math"
"strconv"
)
func main() {
var a int
_, _ = fmt.Scan(&a)
fp := []int{3, 5, 17, 257, 65537}
ans := 0
m := 0
for len(fp) > 0 {
n := int(math.Pow(2, float64(m)))
// 単体でaを超えるようなfpは要らないので消す
for i := len(fp) - 1; i >= 0; i-- {
if n*fp[i] > a {
fp = fp[:len(fp)-1]
}
}
// fmt.Println(m, fp)
// 2だけ特別扱い
k := n * 2
if 3 <= k && k <= a {
// fmt.Println(k)
ans++
}
// fpの組み合わせ
lim := int(math.Pow(2, float64(len(fp))))
for i := 1; i < lim; i++ {
k = n
for j, c := range fmt.Sprintf("%0"+strconv.Itoa(len(fp))+"b", i) {
if c == '1' {
k *= fp[j]
}
}
if 3 <= k && k <= a {
// fmt.Println(k)
ans++
}
}
// fmt.Println(m, ans)
m++
}
fmt.Println(ans)
}
tsuchinaga