AtCoder Beginner Contest 182 C - To 3 https://atcoder.jp/contests/abc182/tasks/abc182_c
package main
import(
"fmt"
"bufio"
"os"
"strconv"
"strings"
)
var rdr=bufio.NewReaderSize(os.Stdin,1024*1024)
func readLine() string {
buf := []byte{}
for {
l, p, e := rdr.ReadLine()
if e != nil {
panic(e)
}
buf = append(buf, l...)
if !p {
break
}
}
return string(buf)
}
func readInts()[]int{
s:=strings.Split(readLine()," ")
res:=[]int{}
for _,v:=range s{
i,_:=strconv.Atoi(v)
res=append(res,i)
}
return res
}
func main(){
s:=strings.Split(readLine(),"")
//Il y a un maximum de 18 chiffres qui ne sont pas utilisés, donc 18+1=19
minK:=19
n:=len(s)
for bits:=0;bits<(1<<uint64(n));bits++{
var cp=make([]string,n)
//L'original va changer, alors copiez-le un par un
copy(cp,s)
k:=0
sums:=0
for i:=0;i<n;i++{
if (bits>>uint64(i))&1==1{
k++
}else{
j,_:=strconv.Atoi(s[i])
sums+=j
}
}
if sums%3==0 && minK>k{
minK=k
}
}
if minK==n{
fmt.Println(-1)
}else{
fmt.Println(minK)
}
}
・ Si la somme de chaque chiffre est divisible par 3, elle doit être un multiple de 3. ・ Si vous souhaitez rechercher tous les chiffres que vous ne souhaitez pas utiliser, utilisez la recherche par bits. Compte tenu de ce qui précède, je l'ai résolu en effectuant une recherche complète.
Pour une entrée standard, reportez-vous à ici, et pour une recherche complète de bits, reportez-vous à ici. Merci beaucoup.
Recommended Posts