PAT乙级—1017. A除以B (20)-native
2016-06-13 14:49
435 查看
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
思路:此题在于模拟一个除法竖式的过程。建议写一个除法在旁边对照。
题目链接:
https://www.patest.cn/contests/pat-b-practise/1017
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
思路:此题在于模拟一个除法竖式的过程。建议写一个除法在旁边对照。
#include<iostream> #include<string> using namespace std; int main() { int AA[1001]; string A; int Q[1001]; //保存商 int B,R=0; //R为余数 int k=0; cin>>A>>B; for(int i=0;i<A.length();i++) { AA[i]=A[i]-'0'; //将字符串转换为数字数组 } int number=0; //组成新数字除以除数 for(int i=0;i<A.length();i++) { if(A.length()==1&&AA[i]<B) //如果A是一位并且小于B的话,余数为本身,商为0 { R=AA[i]; Q[0]=0; cout<<Q[0]; break; } if(i==0)//第一次计算余数与剩余计算余数方法不同,故先算第一次 { Q[k++]=AA[i]/B;//先求商的第一位数 R=AA[i]%B; //余数是R number=(AA[i]-AA[i]/B*B)*10+AA[i+1];//上减下做十位,拿被除数下一位做各位 } else { Q[k++]=number/B; R=number-number/B*B; number=(number-number/B*B)*10+AA[i+1]; } } if(Q[0]!=0) cout<<Q[0]; for(int i=1;i<k;i++) { cout<<Q[i]; } cout<<" "<<R<<endl; return 0; }
题目链接:
https://www.patest.cn/contests/pat-b-practise/1017
相关文章推荐
- 运算符重载—复数的计算
- java 之连接mysql数据库
- 【Cubieboard2】配置编译内核支持SPI全双工通信驱动
- 《C++精英内参之程序员高效指南》-18健身方法的选择
- 几个有用的网络相关的命令
- Java 对象和xml转换工具类
- GYP和Ninja的使用介绍
- [C#]循环输出 000 - 999999
- Android开发笔记之《特斯拉-Tesla 代码分析》
- laravel启动过程简单解析
- 计算机网络体系结构简介
- 第8章 数据有没有欺骗性
- Android 自定义柱形ProgressBar进度条
- 有用的IT网站
- python django form error:module' object has no attribute '_meta'
- UnsupportedClassVersionError: com/bh/test/EhcacheTest : Unsupported major.minor version 52.0
- 多线程 - 阻塞队列blockingQueue用法
- 运维之netstat
- vs引用Microsoft.Office.Interop.Excel.dll版本问题
- solr 4.6的安装配置