A除以B (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)

题目描述

本题要求计算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()
{
char str[10001];
int Y=0,S,C,current=0;
cin>>str>>C;
for(int i=0;str[i]!='\0';i++)
{
//当前的被除数
current=Y*10+str[i]-'0';
//当前的商
S=current/C;
//当前的余数
    Y=current%C;
if(i==0&&S==0)
continue;
else
cout<<S;
}
cout<<" "<<Y<<endl;
return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42433442/article/details/80967813