二进制除法_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


相关推荐

  • java map()_java之map的基本介绍

    java map()_java之map的基本介绍map简介在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):HashMap我们最常用的Map,它根据key的HashCode值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度。HashMap最多只允许一条记录的…

    2022年7月7日
    29
  • C++之Error无法解析的外部符号[通俗易懂]

    C++之Error无法解析的外部符号[通俗易懂]C++之VisualStudio的使用遇到问题解决文章目录C++之VisualStudio的使用遇到问题解决问题一无法解析的外部符号问题二无法打开文件lib问题三debug不可以运行,release可以运行问题一无法解析的外部符号[问题描述]在编译中遇到,viaualstudio无法解析的外部符号该符号在外部函数中被引用[问题处理]1.分析问题,这个错误定义为一个:连接错误。2.根本原因是函数虽然申明了,但是没有定义函数的实现3.排查问题出现的几

    2022年6月28日
    35
  • Iterative Soft Thresholding和Iterative Shrinkage/Thresholding的区别「建议收藏」

    Iterative Soft Thresholding和Iterative Shrinkage/Thresholding的区别「建议收藏」版权声明:本文为博主原创文章,遵循CC4.0by-sa版权协议,转载请附上原文出处链接和本声明。…

    2022年6月6日
    32
  • connect A with B_anyconnect怎么用

    connect A with B_anyconnect怎么用解决git下载出现:Failedtoconnectto127.0.0.1port1080:Connectionrefused拒绝连接错误(20190226)文章目录:一、git拒绝连接原因分析二、错误解决方式1、查看Linux当前有没有使用代理2、查看端口有没有被占用2、取消代理设置linux解决端口号被占用(扩展内容)不知道是不是翻墙导致的错误,昨天同事说服务器出现了这个错误……

    2025年9月28日
    5
  • pycharm代码整体左移和右移缩进快捷键

    pycharm代码整体左移和右移缩进快捷键在使用pycharm时,经常会需要多行代码同时缩进、左移,pycharm提供了快捷方式1、pycharm使多行代码同时缩进  鼠标选中多行代码后,按下Tab键,一次缩进四个字符2、pycharm使多行代码同时左移 鼠标选中多行代码后,同时按住shift+Tab键,一次左移四个字符…

    2022年8月27日
    7
  • sql的嵌套查询_嵌套查询和嵌套结果的区别

    sql的嵌套查询_嵌套查询和嵌套结果的区别SQL连接查询和嵌套查询详解连接查询若一个查询同时涉及两个或两个以上的表,则称之为连接查询。连接查询是数据库中最最要的查询,包括1、等值与非等值连接查询2、自然连接查询1、等值连接查询2、自然连接查询3、非等值连接查询4、自身连接查询5、外连接查询6、复合条件查询1、等值与非等值连接查询比较运算符主要有=、>、<、>=、<=、!=(或<>)等。下面来看一个例子:假设有一个学生数据库,其中有三张表,即学生信息表(Student)、课程表(Cours

    2022年8月10日
    9

发表回复

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

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