結果

問題 No.3535 $E\times - Otogibanashi$
コンテスト
ユーザー ID 21712
提出日時 2026-05-09 12:16:34
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
AC  
実行時間 596 ms / 2,000 ms
コード長 1,515 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 13,993 ms
コンパイル使用メモリ 283,756 KB
実行使用メモリ 100,352 KB
最終ジャッジ日時 2026-05-09 12:16:58
合計ジャッジ時間 17,233 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 21
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"

func main() {
	var n,p int
	Scan(&n,&p)
	exotogi := map[int]bool{}
	ans := 0
	for d5 := 1; d5 <= 9; d5++ {
		d4 := d5
		for d3 := 0; d3 <= 9; d3++ {
			d0 := d3
			for d2 := 0; d2 <= 9; d2++ {
				d1 := d2
				otogi := d5*1e5+
					d4*1e4+
					d3*1e3+
					d2*1e2+
					d1*1e1+
					d0*1e0
				emax := n / otogi
				for e := 1; e <= emax; e++ {
					ex := -e*otogi
					if _, ok := exotogi[ex]; !ok {
						ans += ex
						ans += 10*p
						ans %= p
						exotogi[ex] = true
					}
				}
			}
		}
	}
	Println((ans+p)%p)
}

/*
考察

問題文の意味がまるでわからない
Ex御伽話数とは
 k のことなのか
 E のことなのか
 E*(-k) のことなのか
わからん

絶対値N以下で求めろという文言から
E*(-k) がEx御伽話数のことなのか?

"Ex"御伽噺数
のExはイーエックスではなく
E*のことを指すと読み取れば
E*(-k) がEx御伽話数のことなのだろうけど

自分に読解力が足りなくて問題文を読み解くのが難しい

御伽噺数は共通桁ごと総当たりすれば全通り求められる(9x10x10通り≒約10^3通り?)
Nを御伽話数kで割れば最大のEmaxが求まるので、1~EmaxまでEx御伽噺数を全部求めて(Emaxは大きくても10^4くらい?)、セットで重複除去して総和求めるだけ?
(負数に対してmoduloを計算するのが最近の流行なのか?)

Nが最小の御伽噺数より小さい場合は答えは常に0
*/
0