算法競(jìng)賽2022年第十三屆藍(lán)橋杯C++ B組_X 進(jìn)制減法
/*??
321=
3*20+
2*2+
1
=65
*/
#include<iostream>??
#include<algorithm>
using namespace std;
const int M = 100010,? ?mod = 1000000007;
typedef long long LL;
int a[M]={0,0, 4,10 }; // a[] 存儲(chǔ)A各位數(shù)字
int b[M]={0,0,2,1}, w[M];? //? ?b[] 存儲(chǔ)B各位數(shù)字? ?w[] 存儲(chǔ)各位的進(jìn)制
int n;
int Ma, Mb;
LL weight[M];? // 各位數(shù)字的實(shí)際權(quán)重
LL A, B;
int main(){
? ?// cin >> n;? // 最大進(jìn)制
n=11;
? ? //cin >> Ma;
Ma=3;
? ? //for(int i = Ma; i >= 1; i --) cin >> a[i];
? ? //cin >> Mb;
Mb=3;
? ? //for(int i = Mb; i >= 1; i --) cin >> b[i];
? ? // 確定各位進(jìn)制 w[i]
? ? int MM = max(Ma, Mb);? // A B 中最大的位數(shù)
? ? for(int i = MM;i >= 1; i --){?
? ? ? ? w[i] = max(2,? max(a[i], b[i]) + 1);
? ? }
? ? // 計(jì)算權(quán)重
? ? weight[1] = 1;
? ? for(int i = 2; i <= MM;i ++){
? ? ? ? weight[i] = w[i - 1] * weight[i - 1] % mod;
? ? }
? ? // 計(jì)算A
? ? for(int i = Ma; i >= 1; i --){
? ? ? ? A = (A + a[i] * weight[i]) % mod;
? ? }
? ? // 計(jì)算B
? ? for(int i = Mb; i >= 1; i --){
? ? ? ? B = (B + b[i] * weight[i]) % mod;
? ? }
? ? // A - B
? ? cout << (A - B + mod) % mod << endl;
? ? return 0;
}