本来想找Go的,结果全是C++的题。。。编程题都没过,1,2题感觉思路是对的,不知道哪写的有问题,第3题感觉应该用线段树维护几个值?各位1,2题A了的能帮我看看吗?第一题遍历一遍数组,把相同颜色累加求和,另外乘以前面不同颜色的和并加到最终结果上,过程不断取模。func main() {mod := big.NewInt(int64(1e9 + 7))var n intvar x int64fmt.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也是过不了。