ARC046 Aの数学的解法
https://gyazo.com/92e247473ac49a60aeec74ee9376bc32
が、PAST本では数学的にO(1)で解く方法も紹介してあった 解法
ゾロ目というのは、例えば
1桁なら1, 2, 3, 4, 5, 6, 7, 8, 9
2桁なら11, 22, 33, 44, 55, 66, 77, 88, 99
つまりN番目のゾロ目の桁数は、N/9した時の数字になる
そのうち何番目か(つまり111なのか333なのか、の数字)はN%9(0なら9)の数字になる
解答
code:main.go
package main
import (
"bufio"
"fmt"
"math"
"os"
"strconv"
)
func solve(N int64) {
digit := math.Ceil(float64(N) / 9)
num := N % 9
if num == 0 {
num = 9
}
var r []rune
for n := 0; n < int(digit); n++ {
r = append(r, []rune(strconv.Itoa(int(num)))...)
}
fmt.Println(string(r))
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
const initialBufSize = 4096
const maxBufSize = 1000000
scanner.Buffer(make([]byte, initialBufSize), maxBufSize)
scanner.Split(bufio.ScanWords)
var N int64
scanner.Scan()
N, _ = strconv.ParseInt(scanner.Text(), 10, 64)
solve(N)
}