求助蓝桥杯2022省B,P8782,X进制减法
RE#4和#10(我看到讨论区里有的)
#include<iostream>
using namespace std;
typedef long long ll;
ll n, ma, mb;
ll mod = 1000000007;
ll a[lbk]100005[rbk], b[lbk]100005[rbk];//表示两个进制数
int main() {
cin >> n;
cin >> ma;
for (ll i = 0;i < ma;i++) {
scanf_s("%lld", &a[lbk]i[rbk]);
}
cin >> mb;
for (ll i = ma-mb;i < ma;i++) {
scanf_s("%lld", &b[lbk]i[rbk]);
}
ll ans = 0,quan=1;//用quan累乘每个位上的权值
for (ll i = max(ma, mb)-1;i >=0;i--) {
ans = (ans + quan * (a[lbk]i[rbk] - b[lbk]i[rbk])) % mod;
//a与b的差乘以权值再累加给ans
quan = (quan * (max(max(a[lbk]i[rbk], b[lbk]i[rbk]) + 1, 2ll)))%mod;
}
cout << ans;
system("pause");
return 0;
}
RE#4和#10(我看到讨论区里有的)
#include<iostream>
using namespace std;
typedef long long ll;
ll n, ma, mb;
ll mod = 1000000007;
ll a[lbk]100005[rbk], b[lbk]100005[rbk];//表示两个进制数
int main() {
cin >> n;
cin >> ma;
for (ll i = 0;i < ma;i++) {
scanf_s("%lld", &a[lbk]i[rbk]);
}
cin >> mb;
for (ll i = ma-mb;i < ma;i++) {
scanf_s("%lld", &b[lbk]i[rbk]);
}
ll ans = 0,quan=1;//用quan累乘每个位上的权值
for (ll i = max(ma, mb)-1;i >=0;i--) {
ans = (ans + quan * (a[lbk]i[rbk] - b[lbk]i[rbk])) % mod;
//a与b的差乘以权值再累加给ans
quan = (quan * (max(max(a[lbk]i[rbk], b[lbk]i[rbk]) + 1, 2ll)))%mod;
}
cout << ans;
system("pause");
return 0;
}