本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:123456789050987654321 7输出样例:
17636684150141093474 3
------------------------------------------------
用字符数组实现多位数的除法。
刚开始使用sizeof求数组的大小,结果每次都乱码,发现size每次都是1001,所以又改成strlen求数组大小。
需要注意的是,结果第一位的0不输出,但如果结果是0则要输出一个0。
#include <iostream>
#include<string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
//先用除法定理进行计算
int main(int argc, char** argv) {
char a[1001],re[1001];
int b;
cin>>a>>b;
int size=strlen(a);
int i=0,j=0;
int qq;
qq=a[i++]-'0';
//第一位除以b,小于b加一位,除完商加结果,与加下一位
while(i<size)
{
if(qq<b)
{
qq=qq*10+(a[i]-'0');
re[j++]='0';
}
else
{
re[j++]=qq/b+'0';
qq=qq%b*10+(a[i]-'0');
}
i++;
}
re[j++]=qq/b+'0';
qq=qq%b;
int first=0;
for(int i=0;i<j;i++)
{
if(re[i]=='0'&&first==0)
{
continue;
}
else
{
cout<<re[i];
first=1;
}
}
if(first==0)
{
cout<<0;
}
cout<<" "<<qq;
return 0;
}