結果
| 問題 | No.1406 Test |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-19 20:31:31 |
| 言語 | Scala (3.10.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 301 ms / 2,000 ms |
| + 712µs | |
| コード長 | 11,471 bytes |
| 記録 | |
| コンパイル時間 | 13,827 ms |
| コンパイル使用メモリ | 268,748 KB |
| 実行使用メモリ | 54,912 KB |
| 最終ジャッジ日時 | 2026-10-19 20:31:59 |
| 合計ジャッジ時間 | 23,336 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 20 |
ソースコード
import java.io.{InputStream, OutputStream, IOException, Closeable, Flushable}
import java.nio.charset.StandardCharsets
// ライブラリ一式
// https://github.com/phspls/scala-kyopro
/**
* AtCoder向けの高速入出力ライブラリ (Scala Native / Scala 3 双方に対応)
*
* 【特徴】
* 1. Scala Native (LLVM) および Scala 3 (JVM) の両方で追加依存なしにそのまま動作可能
* 2. 64KB の内部バイトバッファによる低レベル高速読み込み・書き込み
* 3. 文字列生成・ボクシングを極力排除した整数 (Int/Long) のダイレクトパース & フォーマット
* 4. AtCoder で頻出する配列入力、複数タプル入力、Yes/No 出力、配列の一括出力などの便利メソッドを完備
* 5. auto-flush を備えた FastIO.run ユーティリティにより flush 忘れによる WA/TLE を防止
*/
final class FastScanner(private val in: InputStream = System.`in`) {
private val bufferSize: Int = 1 << 16 // 64 KB
private val buffer: Array[Byte] = new Array[Byte](bufferSize)
private var ptr: Int = 0
private var buflen: Int = 0
private var tokenBuf: Array[Byte] = new Array[Byte](64)
@inline private def hasNextByte(): Boolean = {
if (ptr < buflen) true
else {
ptr = 0
try {
buflen = in.read(buffer)
} catch {
case _: IOException => buflen = -1
}
buflen > 0
}
}
@inline private def readByte(): Int = {
if (hasNextByte()) {
val b = buffer(ptr) & 0xFF
ptr += 1
b
} else -1
}
@inline private def skipWhitespace(): Boolean = {
while (hasNextByte() && (buffer(ptr) & 0xFF) <= 32) {
ptr += 1
}
hasNextByte()
}
/** 次のトークン(空白以外の文字列)が存在するか判定 */
def hasNext(): Boolean = skipWhitespace()
/** 次のトークンを String として取得 (UTF-8 対応) */
def next(): String = {
if (!skipWhitespace()) throw new java.util.NoSuchElementException("No more tokens in input stream")
var len = 0
var b = readByte()
while (b > 32) {
if (len == tokenBuf.length) {
val newBuf = new Array[Byte](tokenBuf.length * 2)
java.lang.System.arraycopy(tokenBuf, 0, newBuf, 0, len)
tokenBuf = newBuf
}
tokenBuf(len) = b.toByte
len += 1
b = readByte()
}
new String(tokenBuf, 0, len, StandardCharsets.UTF_8)
}
/** 次の 32bit 整数を取得(負数・Int.MinValue 対応) */
def nextInt(): Int = {
if (!skipWhitespace()) throw new java.util.NoSuchElementException("No more tokens in input stream")
var b = readByte()
var negative = false
if (b == '-') {
negative = true
b = readByte()
}
if (b < '0' || b > '9') {
throw new NumberFormatException(s"Invalid integer character: ${b.toChar}")
}
var res = -(b - '0')
b = readByte()
while (b >= '0' && b <= '9') {
res = res * 10 - (b - '0')
b = readByte()
}
if (negative) res else -res
}
/** 次の 64bit 整数を取得(負数・Long.MinValue 対応) */
def nextLong(): Long = {
if (!skipWhitespace()) throw new java.util.NoSuchElementException("No more tokens in input stream")
var b = readByte()
var negative = false
if (b == '-') {
negative = true
b = readByte()
}
if (b < '0' || b > '9') {
throw new NumberFormatException(s"Invalid integer character: ${b.toChar}")
}
var res = -(b - '0').toLong
b = readByte()
while (b >= '0' && b <= '9') {
res = res * 10L - (b - '0')
b = readByte()
}
if (negative) res else -res
}
/** 次の Double 値を取得 */
def nextDouble(): Double = java.lang.Double.parseDouble(next())
/** 次の非空白文字を 1 文字取得 */
def nextChar(): Char = {
if (!skipWhitespace()) throw new java.util.NoSuchElementException("No more tokens in input stream")
readByte().toChar
}
/** 改行までの 1 行を取得 */
def nextLine(): String = {
if (!hasNextByte()) throw new java.util.NoSuchElementException("No more lines in input stream")
var len = 0
var b = readByte()
while (b != -1 && b != '\n' && b != '\r') {
if (len == tokenBuf.length) {
val newBuf = new Array[Byte](tokenBuf.length * 2)
java.lang.System.arraycopy(tokenBuf, 0, newBuf, 0, len)
tokenBuf = newBuf
}
tokenBuf(len) = b.toByte
len += 1
b = readByte()
}
if (b == '\r') {
if (hasNextByte() && (buffer(ptr) & 0xFF) == '\n') {
ptr += 1
}
}
new String(tokenBuf, 0, len, StandardCharsets.UTF_8)
}
// --- 便利メソッド (配列・タプル入力) ---
def nextIntArray(n: Int): Array[Int] = {
val arr = new Array[Int](n)
var i = 0
while (i < n) {
arr(i) = nextInt()
i += 1
}
arr
}
def nextLongArray(n: Int): Array[Long] = {
val arr = new Array[Long](n)
var i = 0
while (i < n) {
arr(i) = nextLong()
i += 1
}
arr
}
def nextDoubleArray(n: Int): Array[Double] = {
val arr = new Array[Double](n)
var i = 0
while (i < n) {
arr(i) = nextDouble()
i += 1
}
arr
}
def nextStringArray(n: Int): Array[String] = {
val arr = new Array[String](n)
var i = 0
while (i < n) {
arr(i) = next()
i += 1
}
arr
}
def nextInt2(): (Int, Int) = (nextInt(), nextInt())
def nextInt3(): (Int, Int, Int) = (nextInt(), nextInt(), nextInt())
def nextInt4(): (Int, Int, Int, Int) = (nextInt(), nextInt(), nextInt(), nextInt())
def nextLong2(): (Long, Long) = (nextLong(), nextLong())
def nextLong3(): (Long, Long, Long) = (nextLong(), nextLong(), nextLong())
def nextLong4(): (Long, Long, Long, Long) = (nextLong(), nextLong(), nextLong(), nextLong())
}
final class FastPrinter(private val out: OutputStream = System.out) extends Closeable with Flushable {
private val bufferSize: Int = 1 << 16 // 64 KB
private val buffer: Array[Byte] = new Array[Byte](bufferSize)
private var ptr: Int = 0
private val numBuf: Array[Byte] = new Array[Byte](24)
@inline private def ensureCapacity(needed: Int): Unit = {
if (ptr + needed > bufferSize) {
flushBuffer()
}
}
@inline private def flushBuffer(): Unit = {
if (ptr > 0) {
out.write(buffer, 0, ptr)
ptr = 0
}
}
override def flush(): Unit = {
flushBuffer()
out.flush()
}
override def close(): Unit = {
flush()
out.close()
}
@inline def print(c: Char): FastPrinter = {
ensureCapacity(1)
buffer(ptr) = c.toByte
ptr += 1
this
}
def print(s: String): FastPrinter = {
val len = s.length
var isAscii = true
var i = 0
while (i < len && isAscii) {
if (s.charAt(i) >= 128) isAscii = false
i += 1
}
if (isAscii) {
i = 0
while (i < len) {
val chunk = Math.min(len - i, bufferSize - ptr)
var j = 0
while (j < chunk) {
buffer(ptr + j) = s.charAt(i + j).toByte
j += 1
}
ptr += chunk
i += chunk
if (ptr == bufferSize) flushBuffer()
}
} else {
val bytes = s.getBytes(StandardCharsets.UTF_8)
var off = 0
while (off < bytes.length) {
val chunk = Math.min(bytes.length - off, bufferSize - ptr)
java.lang.System.arraycopy(bytes, off, buffer, ptr, chunk)
ptr += chunk
off += chunk
if (ptr == bufferSize) flushBuffer()
}
}
this
}
def print(x: Int): FastPrinter = {
ensureCapacity(16)
if (x == 0) {
buffer(ptr) = '0'.toByte
ptr += 1
} else {
var n = x
if (n < 0) {
buffer(ptr) = '-'.toByte
ptr += 1
if (n == Int.MinValue) {
val s = "2147483648"
var i = 0
while (i < 10) {
buffer(ptr) = s.charAt(i).toByte
ptr += 1
i += 1
}
return this
}
n = -n
}
var idx = 0
while (n > 0) {
numBuf(idx) = ((n % 10) + '0').toByte
n /= 10
idx += 1
}
while (idx > 0) {
idx -= 1
buffer(ptr) = numBuf(idx)
ptr += 1
}
}
this
}
def print(x: Long): FastPrinter = {
ensureCapacity(24)
if (x == 0L) {
buffer(ptr) = '0'.toByte
ptr += 1
} else {
var n = x
if (n < 0L) {
buffer(ptr) = '-'.toByte
ptr += 1
if (n == Long.MinValue) {
val s = "9223372036854775808"
var i = 0
while (i < 19) {
buffer(ptr) = s.charAt(i).toByte
ptr += 1
i += 1
}
return this
}
n = -n
}
var idx = 0
while (n > 0L) {
numBuf(idx) = ((n % 10L) + '0').toByte
n /= 10L
idx += 1
}
while (idx > 0) {
idx -= 1
buffer(ptr) = numBuf(idx)
ptr += 1
}
}
this
}
def print(d: Double): FastPrinter = print(d.toString)
def print(d: Double, precision: Int): FastPrinter = {
print(String.format(java.util.Locale.US, s"%.${precision}f", java.lang.Double.valueOf(d)))
}
def print(b: Boolean): FastPrinter = print(if (b) "true" else "false")
@inline def println(): FastPrinter = {
ensureCapacity(1)
buffer(ptr) = '\n'.toByte
ptr += 1
this
}
@inline def println(x: Int): FastPrinter = { print(x); println() }
@inline def println(x: Long): FastPrinter = { print(x); println() }
@inline def println(d: Double): FastPrinter = { print(d); println() }
@inline def println(d: Double, precision: Int): FastPrinter = { print(d, precision); println() }
@inline def println(s: String): FastPrinter = { print(s); println() }
@inline def println(c: Char): FastPrinter = { print(c); println() }
@inline def println(b: Boolean): FastPrinter = { print(b); println() }
/** AtCoder で頻出する Yes / No 判定出力 */
@inline def printlnYesNo(cond: Boolean, upper: Boolean = false): FastPrinter = {
if (upper) {
println(if (cond) "YES" else "NO")
} else {
println(if (cond) "Yes" else "No")
}
}
/** 配列の要素を空白区切りで出力(末尾改行なし) */
def printArray(arr: Array[Int], sep: String = " "): FastPrinter = {
var i = 0
val len = arr.length
while (i < len) {
if (i > 0) print(sep)
print(arr(i))
i += 1
}
this
}
/** 配列の要素を空白区切りで出力し、最後に改行 */
def printlnArray(arr: Array[Int], sep: String = " "): FastPrinter = {
printArray(arr, sep)
println()
}
}
/**
* 提出用テンプレートの実装例 (Main.scala)
* @main
* def main(args: Array[String]): Unit = {
* val in = new FastScanner()
* val out = new FastPrinter()
*
* val n = in.nextInt()
* val a = in.nextIntArray(n)
* out.println(a.sum)
*
* out.flush() // 最後に必ず flush を呼ぶこと
* }
*/
@main
def main(): Unit =
val in = new FastScanner()
val out = new FastPrinter()
// ----------------------
// 解法ロジック記述エリア
// ----------------------
val n = in.nextInt()
val a = in.nextIntArray(n-1)
val sum = a.sum
val result = (0 to 100).filter(i => (sum+i)/n*n == sum+i).length
out.println(result)
out.flush() // 最後に必ず flush を呼ぶこと