网站qq显示未启用,怎么做起泡胶,南宁定制网站制作网络公司,ps网站怎么做滑动背景图片X 进制减法 2024-12-6 蓝桥杯每日一题 X 进制减法 贪心 进制转换 题目大意 进制规定了数字在数位上逢几进一。 XX 进制是一种很神奇的进制, 因为其每一数位的进制并不固定#xff01;例如说某 种 XX 进制数, 最低数位为二进制, 第二数位为十进制, 第三数位为八进制, 则 XX 进制…X 进制减法 2024-12-6 蓝桥杯每日一题 X 进制减法 贪心 进制转换 题目大意 进制规定了数字在数位上逢几进一。 XX 进制是一种很神奇的进制, 因为其每一数位的进制并不固定例如说某 种 XX 进制数, 最低数位为二进制, 第二数位为十进制, 第三数位为八进制, 则 XX 进制数 321 转换为十进制数为 65 。 现在有两个 XX 进制表示的整数 AA 和 BB, 但是其具体每一数位的进制还不确 定, 只知道 AA 和 BB 是同一进制规则, 且每一数位最高为 NN 进制, 最低为二进 制。请你算出 A−BA−B 的结果最小可能是多少。 请注意, 你需要保证 AA 和 BB 在 XX 进制下都是合法的, 即每一数位上的数 字要小于其进制。 解题思路 刚开始看这道题的时候是没有看懂X 进制数是怎么转换成十进制的。 先来看一个二进制数怎么转换成十进制 11111 1 ∗ 2 ∗ 2 ∗ 2 ∗ 2 1 ∗ 2 ∗ 2 ∗ 2 12 ∗ 2 1 ∗ 2 1 31 11111 1 * 2 * 2 * 2 * 2 1 * 2 * 2 * 2 1 2 * 2 1 * 2 1 31 111111∗2∗2∗2∗21∗2∗2∗212∗21∗2131 注意观察到因为这个11111的每一位都是作为二进制的数那么在计算的时候它需要乘上当前位置前后面的所有2 不包括自己。 类比本题的例子来说 321 3 ∗ 10 ∗ 2 2 ∗ 2 1 65 321 3*10*2 2*2 1 65 3213∗10∗22∗2165 同样是某一位上的数num[i] * 它后面所有的进制 之后就是先判断这个每一位对应的进制由于想要最小值那么由以上的计算过程可知只需让每一个进制取到最小值即可当然最小是二进制。 代码相关解释都在注释中。 Accepted
#include iostreamusing namespace std;
typedef long long ll;
const int N 100010,mod 1000000007;
int a[N],b[N],n,m;
ll c[N]; // 存储进制前缀积int main()
{cinnm;for(int i m;i 1;i--) {cina[i];}int len m;cinm;for(int i m;i 1;i--) {cinb[i];}c[0] 1;len len m ? len : m; for(int i 1;i len;i) {// 确定进制int t max(a[i],b[i]);c[i] max(2,t1);c[i] c[i-1]*c[i] % mod; // 计算前缀积}ll res 0;for(int i 1;i len;i) {res (res(a[i]-b[i])*c[i-1]%mod)%mod;}// 虽然题目中表明A B但是取模之后的值不一定是A大所以最后要做将负数转为正值的操作// 那么先加mod就是为了补充A的不足而加的// 最后为了防止res的值为负进行加mod再取模将其转换为正值4.如果不处理这点会过50%cout(res mod) % modendl;return 0;
}备注 想要一起备赛的小伙伴添加一下