二进制除法_111011001÷1011二进制除法

二进制除法_111011001÷1011二进制除法题目描述: 二进制数nmodm的结果是多少?对于二进制数的取模运算,我们的第一反应一定是模拟其减法运算,然后逐位相减。但是这道题的数据达到了$2e5$,鉴于减法模拟的巨大常数,一定是会

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

题目描述: 
二进制数n mod m的结果是多少?

对于二进制数的取模运算,我们的第一反应一定是模拟其减法运算,然后逐位相减。但是这道题的数据达到了$2e5$,鉴于减法模拟的巨大常数,一定是会$T$的.所以说我们换一个角度考虑这个问题——数论。看到取模我就想起来那个当年那个坑了我两个小时的取模分配率,然后我又注意到题目里那个比较小的数字,m的长度最大为$20$,我可以先把m处理为10进制作为整个题的$moder$,然后用这个$moder$,一边用快速幂将n转为$10$进制一边取模,时间复杂度$O(m+n)$。

#include<bits/stdc++.h>
using namespace std;
long long suma, sumb, x, y;
int lena, lenb;
char a[200100], b[100];
int f[200100];
int main()
{
    scanf("%s", a);
    scanf("%s", b);
    lena = strlen(a);
    lenb = strlen(b);
    x = 1;
    for (int i  = lenb - 1; i >= 0; i --){
        if (b[i] == '1')
            sumb += x;
        x = x * 2;
    }
    y = 1;
    for (int i = lena - 1; i >= 0; i --){
        if (a[i] == '1')
            suma = (suma + y);
        suma %= sumb;
        y = (y * 2);
        y %= sumb;
    }
    while (true){
        f[0] ++;
        f[f[0]] = suma % 2;
        suma /= 2;
        if (suma == 0)
            break;
    }
    if (!f[0]){
        printf("0\n");
        return 0;
    }
    for (int i = f[0]; i >= 1; i --)
        printf("%d", f[i]);
    return 0;
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167889.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月4日 下午3:00
下一篇 2022年8月4日 下午3:00


相关推荐

  • 数据分析方法论和数据分析方法的区别(数据分析理论)

    如何理解数据分析的方法论问题?首先,数据分析方法论就如同国家的方针政策,指导和决策我们分析的方向。从宏观角度知道如何进行数据分析,就像是一个数据分析的前期规划,知道着后期数据分析工作的开展。数据分析法则就是指具体的分析方法,例如我们常见的对比分析、交叉分析、相关性分析、回归分析、聚类分析等数据分析法,数据分析法则是从微观角度指导我们如何进行数据分析。那么,数据分析方法论的作用有什么呢?…

    2022年4月15日
    41
  • Java走向中国

    Java走向中国             今天,工作之余浏览sun网站的文档中心,惊喜地看到j2se5.0viewchinese!!! 毫不犹豫,先点之而后快。 进入网页: http://gceclub.sun.com.cn/chinese_java_docs.html         虽然只有一个包被翻译了,但不管怎么说,这是一个好的开始!而且更令人高兴的是,这次,j2se5.0版

    2022年7月9日
    19
  • 如何使用 Docker 安全地部署 OpenClaw (龙虾)

    如何使用 Docker 安全地部署 OpenClaw (龙虾)

    2026年3月16日
    2
  • hexdump用法_comm命令

    hexdump用法_comm命令hexdump命令是Linux下的打印16进制的利器,它可以按我们指定的格式输出16进制,特别有用,配合eeprom来用简直是绝配。今天我们来介绍一个hexdump命令的使用: 首先我们准备一个测试用的文件test,十六进制如下: [plain]viewplaincopy00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  …

    2026年2月11日
    5
  • Map转json遇到一些问题

    Map转json遇到一些问题最近发现了一个问题,通过查看用户的活跃度发现了奇怪的事情,有的用户访问某一个接口没有问题,而一些奇葩用户访问这一接口就是不成功,经过查看,原来是Android系统4.4以下map转换json的时候出现了问题,具体是什么了,下面我们来分析分析。第一,利用”org.json.JSONObject”下的JsonObject时,4.4以下的系统出现“=”的问题。比如:Map

    2022年6月20日
    35
  • [自学用]kurtosis

    [自学用]kurtosiskurtosis 峰度 Peakness Kurtosis 又称峰态系数 nbsp 什么是峰度 nbsp 峰度是指次数分布曲线顶峰的尖平程度 是次数分布的又一重要特征 统计上 常以正态分布曲线为标准 来观察比较某一次数分布曲线的顶端正党风尖顶或平顶以及尖平程度的大小 nbsp 峰度的类型 nbsp 根据变量值的集中与分散程度 峰度一般可表现为三种形态 尖顶峰度 平顶峰度和标准峰度 当变

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号