二进制除法_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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pytest(1)安装与入门[通俗易懂]

    Pytest(1)安装与入门[通俗易懂]pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

    2022年7月31日
    5
  • MFC CCriticalSection 关键段

    MFC CCriticalSection 关键段和其他同步对象不同,除非有需要以外,关键区域工作在用户模式下。若一个线程想运行一个封装在关键区域中的代码,它首先做一个旋转封锁,然后等待特定的时间,它进入内核模式去等待关键区域。实际上,关键区域持有一个旋转计数器和一个信号量,前者用于用户模式的等待,后者用于内核模式的等待(休眠态)。在Win32API中,有一个CRITICAL_SECTION结构体表示关键区域对象。在MFC中,有一个类CCri

    2022年7月21日
    12
  • java多线程

    java多线程

    2022年1月11日
    42
  • IDEA 2021.7.21 激活码【中文破解版】

    (IDEA 2021.7.21 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    53
  • vue 图片上传 图片展示 bootstrap

    vue 图片上传 图片展示 bootstrap效果图html…………<--key=idPicUrl-->

    2022年6月22日
    39
  • Java实验三_生物总结必修三

    Java实验三_生物总结必修三JAVA第五周作业Java实验报告三第一题实验代码(1)统计该字符串中字母s出现的次数。cpublicclassLetter{publicstaticvoidmain(Str

    2022年8月3日
    8

发表回复

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

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