James0917 2022-07-19 10:45 采纳率: 77.8%
浏览 118

关于C++的一个问题:二进制余数

描述
  二进制数 n 除以二进制数 m 的二进制余数是多少?

输入:
第一行输入一个二进制数 n(n > 0),n 的长度(二进制数的位数)≤200000。
第二行输入一个二进制数 m(m > 0),m 的长度(二进制数的位数)≤20。

输出:
输出 n 除以 m 的余数。

样例:
输入1:
1010101010
111000
输出1:
1010

输入2:
100
10
输出2:
0

这道题目确实不难,可是二进制数的位数的范围到达了20万,刚刚学习编程的我不太知道有什么办法能存储这么多数据,求高人指教!

  • 写回答

2条回答 默认 最新

  • Hann Yang 优质创作者: 编程框架技术领域 2022-07-19 16:09
    关注
    #include<iostream>
    using namespace std;
    
    void dec2bin(int x)
    {
        if(x>1) dec2bin(x/2);
        cout<<x%2;
    }
    
    int main()
    {
        int n=0,m=0;
        char c=' ';
        
        while(c!='0'&&c!='1') c=getchar();
        while(c=='0'||c=='1') n=n*2+(c=='1'),c=getchar();
        
        while(c!='0'&&c!='1') c=getchar();
        while(c=='0'||c=='1') m=m*2+(c=='1'),c=getchar();
        
        dec2bin(n%m);
        cout<<endl;  
        
        return 0;   
    }
    评论

报告相同问题?

问题事件

  • 创建了问题 7月19日