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(),"")
//Es gibt maximal 18 Ziffern, die nicht verwendet werden, also 18+1=19
minK:=19
n:=len(s)
for bits:=0;bits<(1<<uint64(n));bits++{
var cp=make([]string,n)
//Das Original ändert sich, kopieren Sie es also nacheinander
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)
}
}
・ Wenn die Summe jeder Ziffer durch 3 teilbar ist, muss sie ein Vielfaches von 3 sein. ・ Wenn Sie alle Ziffern durchsuchen möchten, die Sie nicht verwenden möchten, verwenden Sie die Bit-Vollsuche. In Anbetracht des oben Gesagten habe ich es gelöst, als ich eine vollständige Bit-Suche durchgeführt habe.
Informationen zur Standardeingabe finden Sie unter hier. Eine vollständige Suche finden Sie unter hier. Vielen Dank.
Recommended Posts