题目:
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:123456789050987654321 7输出样例:
17636684150141093474 3
思路:
1. 题中给出A是不超过1000位的正整数,远超出int类型最大范围,因此用String储存;
2. 主程序按照正常的整数除法的思路计算,随时输出结果;
3. 定义指标flag,以表示计算是否为开头,避免首位输出零。
#include<iostream> #include<string> using namespace std; int main() { string a; int b, temp=0, i, len, flag=0; cin>>a>>b; len=a.length(); for (i=0; i<len; i++) { temp = temp*10+(a[i]-'0'); if (temp >= b) { cout<<temp/b; flag=1; } else if (flag == 1) { cout<<"0"; } temp%=b; } if (flag == 0) cout<<"0"; cout<<" "<<temp; return 0; }
大数除法算法实现
本文介绍了一种处理大数除法的算法实现方法,针对A不超过1000位和B为1位数的情况,使用字符串存储并按正常整数除法思路计算输出商Q和余数R。
568

被折叠的 条评论
为什么被折叠?



