1017 A除以B (20 分)

本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你须要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。c++

输入格式:

输入在一行中依次给出 A 和 B,中间以 1 空格分隔。spa

输出格式:

在一行中依次输出 Q 和 R,中间以 1 空格分隔。code

输入样例:

123456789050987654321 7

输出样例:




这道题目属于模拟题,模拟除法的过程,这个模拟自己比较简单,可是咱们须要注意几个细节
一、题目给定的A是不超过1000位的正整数,B是一位整数。这个条件就决定了咱们处理A的时候要按照字符串处理
二、当部分余数小于除数的时候,会有商0的可能。在最后咱们须要去除前导0。

17636684150141093474 3
#include <bits/stdc++.h>
using namespace std; string A,Q; int main() { int B,R; R=0;Q=""; cin>>A>>B; int len=A.length(); int i=0; int tempQ=0; while(i<len) { R*=10; R+=A[i]-'0';    //获得部分余数 tempQ=R/B;     //获得当前的商 R=R%B; Q+=tempQ+'0'; i++; } for(int i=0;i<Q.length();)  //去除前导0 { if(Q[i]!='0') break; else Q.erase(Q.begin()+i); } if(Q=="") Q+='0'; cout<<Q<<" "<<R<<endl; return 0; }

 

字符串的删除操做不熟悉,str.erase(i)表示删除字符串从i处开始到end的字符串。而str.erase(str.bigin()+i)表示删除单个字符
相关文章
相关标签/搜索