AcWing 801. 二进制中1的个数-golang
原题链接
简单
作者:
渲染
,
2024-03-31 15:59:46
,
所有人可见
,
阅读 2
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
const N int = 100010
var a = [N]int{}
var n int
func lowBit(x int)int{
return x & -x
}
func main(){
fmt.Scan(&n)
var scanner = bufio.NewScanner(os.Stdin)
var buf = make([]byte, 0, 1024*1024*10) // 设置一个更大的缓冲区
scanner.Buffer(buf, cap(buf))
if scanner.Scan() {
line := scanner.Text() // 读取整行文本
parts := strings.Split(line, " ") // 使用空格分割字符串
for j:=0;j<n;j++ {
num, _ := strconv.Atoi(parts[j]) // 将字符串转换为整数,并检查错误
a[j] = num // 将字符串转换为整数并添加到数组中
}
}
for i:=0;i<n;i++{
var ans int
num := a[i]
for num != 0{
num -= lowBit(num)
ans ++
}
fmt.Printf("%d ",ans)
}
}