当前位置: 首页 > news >正文

X进制减法(贪心算法C++实现)

题目


进制规定了数字在数位上逢几进一。

X 进制是一种很神奇的进制,因为其每一数位的进制并不固定!

例如说某种 X 进制数,最低数位为二进制,第二数位为十进制,第三数位为八进制,则 X 进制数 321 转换为十进制数为 65。

现在有两个 X 进制表示的整数 A 和 B,但是其具体每一数位的进制还不确定,只知道 A 和 B 是同一进制规则,且每一数位最高为 N 进制,最低为二进制。

请你算出 A−B 的结果最小可能是多少。

请注意,你需要保证 A 和 B 在 X 进制下都是合法的,即每一数位上的数字要小于其进制。


输入

第一行一个正整数 N,含义如题面所述。

第二行一个正整数 Ma,表示 X 进制数 A 的位数。

第三行 Ma 个用空格分开的整数,表示 X 进制数 A 按从高位到低位顺序各个数位上的数字在十进制下的表示。

第四行一个正整数 Mb,表示 X 进制数 B 的位数。

第五行 Mb 个用空格分开的整数,表示 X 进制数 B 按从高位到低位顺序各个数位上的数字在十进制下的表示。

请注意,输入中的所有数字都是十进制的。

输出

输出一行一个整数,表示 X 进制数 A−B 的结果的最小可能值转换为十进制后再模 1000000007 的结果。

样例

输入样例:
11
3
10 4 0
3
1 2 0
输出样例:
94

代码

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 100010,MOD = 1000000007;
int q1[N],q2[N],q[N];
int n,a,b;int main(){scanf("%d",&n);scanf("%d",&a);for(int i=a-1;i>=0;i--) scanf("%d",&q1[i]);scanf("%d",&b);for(int i=b-1;i>=0;i--) scanf("%d",&q2[i]);int m = max(a,b);long long res = 0;for(int i=m-1;i>=0;i--){res = (res * (long long)max({2,q1[i]+1,q2[i]+1})+q1[i]-q2[i]) % MOD;}printf("%lld",res);
}
http://www.lryc.cn/news/329824.html

相关文章:

  • [Windows]服务注册工具(nssm)
  • Xilinx缓存使用说明和测试
  • LeetCode:2952. 需要添加的硬币的最小数量(贪心 Java)
  • 企业员工在线培训系统功能介绍
  • 服了,一线城市的后端都卷成这样了吗!?
  • Qt扫盲-QAssisant 集成其他qch帮助文档
  • [lesson01]学习C++的意义
  • LabVIEW双通道太阳射电频谱观测系统
  • Trapcode Particular---打造惊艳粒子效果
  • 从0到1利用express搭建后端服务
  • pytest和unittest 如何选择?
  • 《QT实用小工具·四》屏幕拾色器
  • 【Linux C | 多线程编程】线程的连接、分离,资源销毁情况
  • kubernetes-Pod基于污点、容忍度、亲和性的多种调度策略(二)
  • 数码管时钟--LABVIEW编程
  • linux安装指定版本docker
  • C++刷题篇——05静态扫描
  • Unity AI Navigation自动寻路
  • HarmonyOS实战开发-如何实现一个简单的健康生活应用(上)
  • React中使用antDesign框架
  • Electron安全防护实战:应对常见安全问题及权限控制措施
  • StringBuffer与StringBuilder
  • HCIP综合实验拓扑
  • nuxt学习
  • VS学习建议
  • java汇总区间
  • 【笔记】OpenHarmony设备开发:搭建开发环境(Ubuntu 20.04,VirtualBox 7.0.14)
  • 计算机视觉新巅峰,微软牛津联合提出MVSplat登顶3D重建
  • halcon图像腐蚀
  • neo4j使用详解(六、cypher即时时间函数语法——最全参考)