題目:
本題要求計算 A/B,其中 A 是不超過 1000 位的正整數,B 是 1 位正整數。你需要輸出商數 Q 和餘數 R,使得 A=B×Q+R 成立。
輸入格式:
輸入在一行中依次給出 A 和 B,中間以 1 空格分隔。
輸出格式:
在一行中依次輸出 Q 和 R,中間以 1 空格分隔。
輸入樣例:
123456789050987654321 7
輸出樣例:
17636684150141093474 3
方法:
利用除法的原理,從最高位開始,除以除數並輸出,餘數*10加給下一位作爲被除數。最後即可輸出商,再輸出餘數即可。
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1000];
int b,flag=0;
cin>>a>>b;
int len=strlen(a);
int x=0;
int now=a[0]-'0';
for(int i=0;i<len;i++){
now=a[i]-'0';
int j=0;
if(i!=0)
now=now+x*10;
j=now/b;
x=now%b; //餘數,給下一位
if(i!=0||j!=0){
cout<<j;
flag=1;
}
}
if(flag==0)
cout<<"0";
cout<<" "<<x;
}
注意:
1、測試點1是商爲0的情況,需要輸出商爲0,餘數爲被除數。
例:6/8 輸出 0 6
2、注意當商的開始位爲0時不輸出。
例:23/5 商爲04 餘數3 商前面的0不輸出