• 1017. A除以B (20)


    1017. A除以B (20)
    
    本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
    
    输入格式:
    
    输入在1行中依次给出A和B,中间以1空格分隔。
    
    输出格式:
    
    在1行中依次输出Q和R,中间以1空格分隔。
    
    输入样例:
    123456789050987654321 7
    输出样例:
    17636684150141093474 3

    分析:模拟除法。由于数据较大,直接用内置类型来存储数据是不行的。可以模拟除法将结果计算出来。当然,也可以用java的大数BigInteger来做,但是效率较低会超时。

    #include <iostream>
    using namespace std;
    
    int main()
    {
        string input;
        string ans;
        int r;
        cin>>input>>r;
        int tmp=0;
        for(size_t i=0;i<input.length();i++)
        {
            tmp=tmp*10+(int)(input[i]-'0');
            int q=tmp/r;
            tmp=tmp%r;
            char c=char('0'+q);
            ans.append(1,c);
        }
        
        if(ans[0]=='0'&&ans.length()>1)
        {
            ans=ans.erase(0,1);
        }
        
        cout<<ans<<" "<<tmp<<endl;
        return 0;
    }
  • 相关阅读:
    sizeof、strlen、length、size
    extern关键字
    结构
    引用
    指针
    数组
    linux端口 ,打开服务端口
    linux用户禁用
    防止验证码的恶意发送
    springboot 项目windows下打包、注册服务。
  • 原文地址:https://www.cnblogs.com/xiongmao-cpp/p/6370220.html
Copyright © 2020-2023  润新知