百度笔试24届暑期实习招聘研发A卷

本来想找Go的,结果全是C++的题。。。编程题都没过,1,2题感觉思路是对的,不知道哪写的有问题,第3题感觉应该用线段树维护几个值?各位1,2题A了的能帮我看看吗?
第一题
遍历一遍数组,把相同颜色累加求和,另外乘以前面不同颜色的和并加到最终结果上,过程不断取模。
func main() {
mod := big.NewInt(int64(1e9 + 7))
var n int
var x int64
fmt.Scanln(&n)
nums := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Scan(&x)
nums[i] = x
}
input := bufio.NewScanner(os.Stdin)
input.Scan()
str := input.Text()
fmt.Println(str)
ans := big.NewInt(int64(0))
sumR := big.NewInt(int64(0))
sumB := big.NewInt(int64(0))
for i, s := range str {
if s == 'R' {
tmp := big.NewInt(0)
tmp.SetInt64(nums[i])
sumR.Add(sumR, tmp)
sumR.Mod(sumR, mod)
tmp.Mul(tmp, sumB)
tmp.Mod(tmp, mod)
ans.Add(ans, tmp)
ans.Mod(ans, mod)
} else {
tmp := big.NewInt(0)
tmp.SetInt64(nums[i])
sumB.Add(sumB, tmp)
sumB.Mod(sumB, mod)
tmp.Mul(tmp, sumR)
tmp.Mod(tmp, mod)
ans.Add(ans, tmp)
ans.Mod(ans, mod)
}
}
fmt.Println(ans)
}
最开始都没用大数,用int64也是过不了。
全部评论
佬什么时候笔试的?
点赞 回复 分享
发布于 2023-03-29 11:54 辽宁

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务