ABC
B - 11/11

B - 11/11

解説

問題 (opens in a new tab)

  • 1N1001 \le N \le 100
  • 1Di100(1iN)1 \le D_i \le 100 \quad (1 \le i \le N)

の制約から全探索( O(104)\mathrm{O}(10^4) )で ok.

同じ文字を判定する時は, 1 文字ずつsetに入れて, サイズが 11 かどうかを判定する.

go で文字列の ii 文字目を取得すると, rune型が返されることに注意.

str[0] // rune型
string(str[0]) // string型

提出コード

func main() {
	n := readInt()
 
	D := readInts()
 
	ans := 0
 
	for i := 1; i <= n; i++ {
		set := map[string]struct{}{}
		strI := fmt.Sprint(i)
		for j := 0; j < len(strI); j++ {
			set[string(strI[j])] = struct{}{}
		}
		if len(set) != 1 {
			continue
		}
		for j := 1; j <= D[i-1]; j++ {
			strJ := fmt.Sprint(j)
			set := map[string]struct{}{}
			set[string(strI[0])] = struct{}{}
			for k := 0; k < len(strJ); k++ {
				set[string(strJ[k])] = struct{}{}
			}
 
			if len(set) == 1 {
				ans++
			}
		}
	}
 
	writeLine(ans)
}