小红拿到一个数组其中一些数字被染成红色另一些染成蓝色小红准备从中取2个数选出的两个数的乘积为选择的方案权值选择一红一蓝才是合法的。第一行输入一个正整数n代表数组大小第二行输入n个正整数ai代表小红拿到的数组第三行输入一个由R和B组成的长度为n的字符串第i个字符是R表示第i个元素被染成红色请输出所有合法的选数方案的权值之和并对10的九次方 + 7 取摸用C++写
#include
const int mod = 1e9 + 7;
int n, a[100005], red[100005], blue[100005]; long long ans = 0;
int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } string s; cin >> s; for (int i = 1; i <= n; i++) { if (s[i-1] == 'R') { red[++red[0]] = a[i]; } else { blue[++blue[0]] = a[i]; } } for (int i = 1; i <= red[0]; i++) { for (int j = 1; j <= blue[0]; j++) { ans = (ans + red[i] * 1ll * blue[j]) % mod; } } cout << ans << endl; return 0; }
原文地址: https://www.cveoy.top/t/topic/JwA 著作权归作者所有。请勿转载和采集!