欢迎光临散文网 会员登陆 & 注册

算法竞赛2022年第十三届蓝桥杯C++ B组_X 进制减法

2022-04-17 14:35 作者:Clayton_Zhou  | 我要投稿


/*  

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[] 存储A各位数字

int b[M]={0,0,2,1}, w[M];  //   b[] 存储B各位数字   w[] 存储各位的进制

int n;

int Ma, Mb;

LL weight[M];  // 各位数字的实际权重

LL A, B;

int main(){

   // cin >> 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];


    // 确定各位进制 w[i]

    int MM = max(Ma, Mb);  // A B 中最大的位数

    for(int i = MM;i >= 1; i --){ 

        w[i] = max(2,  max(a[i], b[i]) + 1);

    }

    // 计算权重

    weight[1] = 1;

    for(int i = 2; i <= MM;i ++){

        weight[i] = w[i - 1] * weight[i - 1] % mod;

    }

    // 计算A

    for(int i = Ma; i >= 1; i --){

        A = (A + a[i] * weight[i]) % mod;

    }

    // 计算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;

}


算法竞赛2022年第十三届蓝桥杯C++ B组_X 进制减法的评论 (共 条)

分享到微博请遵守国家法律