题目来源: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;
}