結果

問題 No.376 立方体のN等分 (2)
ユーザー yuki2006
提出日時 2016-06-05 00:15:37
言語 Go
(1.10.3)
結果
AC  
実行時間 266 ms
コード長 901 Byte
コンパイル時間 636 ms
使用メモリ 1,688 KB
最終ジャッジ日時 2018-10-18 18:45:28

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
sample1.txt AC 1 ms
992 KB
sample2.txt AC 2 ms
988 KB
system_test1.txt AC 113 ms
1,008 KB
system_test2.txt AC 109 ms
1,016 KB
system_test3.txt AC 134 ms
1,008 KB
t01.txt AC 1 ms
992 KB
t02.txt AC 1 ms
988 KB
t03.txt AC 2 ms
996 KB
t04.txt AC 7 ms
992 KB
t05.txt AC 26 ms
1,004 KB
t06.txt AC 47 ms
1,136 KB
t07.txt AC 58 ms
992 KB
t08.txt AC 80 ms
1,008 KB
t09.txt AC 84 ms
996 KB
t10.txt AC 91 ms
996 KB
t11.txt AC 99 ms
988 KB
t12.txt AC 229 ms
1,688 KB
t13.txt AC 108 ms
1,004 KB
t14.txt AC 120 ms
988 KB
t15.txt AC 128 ms
1,012 KB
t16.txt AC 125 ms
992 KB
t17.txt AC 251 ms
1,688 KB
t18.txt AC 131 ms
992 KB
t19.txt AC 259 ms
1,688 KB
t20.txt AC 259 ms
1,688 KB
t21.txt AC 134 ms
996 KB
t22.txt AC 266 ms
1,688 KB
t23.txt AC 133 ms
988 KB
t24.txt AC 133 ms
992 KB
t25.txt AC 131 ms
1,000 KB
t26.txt AC 131 ms
996 KB
t27.txt AC 134 ms
988 KB
t28.txt AC 133 ms
1,000 KB
t29.txt AC 133 ms
992 KB
t30.txt AC 135 ms
996 KB
t31.txt AC 132 ms
996 KB
t32.txt AC 133 ms
992 KB
t33.txt AC 135 ms
988 KB
t34.txt AC 135 ms
992 KB
t35.txt AC 134 ms
1,004 KB
テストケース一括ダウンロード
コンパイルメッセージ
go: disabling cache (/root/.cache/go-build) due to initialization failure: open /root/.cache/go-build/log.txt: permission denied

ソースコード

diff #
package main

import (
	"fmt"
	"sort"
)

func divisor(N int) []int {
	ans := make([]int, 0)

	for i := 1; i * i <= N; i++ {
		if N % i == 0 {

			ans = append(ans, i)
			if i * i != N {
				ans = append(ans, N / i)
			}
		}

	}
	sort.Ints(ans)
	return ans
}

func main() {
	var N int
	fmt.Scanf("%d", &N)
	mn := N
	divs := divisor(N)

	// オーバーフロー対策
	for i := 0; i < len(divs) && divs[i] <= 1000000 && divs[i] * divs[i] * divs[i] <= N; i++ {
		if N % divs[i] != 0 {
			continue
		}

		for j := 0; j < len(divs)&& divs[j] <= 10000000  && divs[j] * divs[j] * divs[i] <= N; j++ {
			if N % (divs[i] * divs[j]) != 0 {
				continue
			}

			k := N / (divs[i] * divs[j])
			mn = min(mn, max(0, divs[i] + divs[j] + k - 3))
		}
	}
	fmt.Println(mn, N - 1)
}

func min(a int, b int) int {
	if a < b {
		return a
	}
	return b
}
func max(a int, b int) int {
	if a < b {
		return b
	}
	return a
}
0