PAT(乙级)1007 A除以B (20)

来源:互联网 发布:vb上视频教程全集 编辑:程序博客网 时间:2024/06/06 10:47

题目来源:http://www.nowcoder.com/pat/6/problem/4043

题目描述

本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。

输入描述:

输入在1行中依次给出A和B,中间以1空格分隔。


输出描述:

在1行中依次输出Q和R,中间以1空格分隔。

输入例子:

123456789050987654321 7

输出例子:

17636684150141093474 3
题目分析:由于被除数较大(1000位),所以采用字符串保存,进而采用每位来除除数(与人工算法类似)。

#include<iostream>using namespace std;int main(){        string s;        int k,remain=0;        cin>>s>>k;        for(int i=0;i<s.size();i++)        {                int temp=s[i]-'0';                int p=(remain*10+temp)/k;                remain=(remain*10+temp)%k;                if(i!=0||temp>=k)                        cout<<p;        }        if((s.size()==1)&&(s[0]-'0')<k)                cout<<"0";        cout<<" "<<remain;}


1 0