题目内容:
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
代码实现:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string A;//数字太大了 就用string 或者 char[]
int B;
//实现输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
cin >>A>>B;
int len=A.length();
//接下来就是模拟手动除法运算 “笔算”
int C;//用来表示商
int D;//用来表示余数
C=(A[0]-'0')/B;
D=(A[0]-'0')%B;
if(len==1||(len>1&&(A[0]-'0')>B)){
cout<<C;
}
for(int i=1;i<len;i++)
{
cout<<(D*10+(A[i]-'0'))/B;
D= (D*10+(A[i]-'0'))%B;
}
cout<<" ";
cout<<D;
return 0;
}
题目心得:
1.这道题应该是破记录的 算是最快 做完的(过程中也参考了正确题解的思路)。
2.然后自己动手实现的除法运算。
3.有一个思想之前学过,那就是,太大的整数要用string或者char[]存贮
计算时要把char类型转换成int类型(A[i]-‘0’)(在对字母进行转换时也类似)
4.继续加油!