PAT 1007 A除以B (大数相除)
2015-08-21 19:02
429 查看
题目描述
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入描述:
输入在1行中依次给出A和B,中间以1空格分隔。
输出描述:
在1行中依次输出Q和R,中间以1空格分隔。
输入例子:
123456789050987654321 7
输出例子:
17636684150141093474 3
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入描述:
输入在1行中依次给出A和B,中间以1空格分隔。
输出描述:
在1行中依次输出Q和R,中间以1空格分隔。
输入例子:
123456789050987654321 7
输出例子:
17636684150141093474 3
[code]#include <iostream> #include <math.h> #include <stdlib.h> #include <string.h> using namespace std; int main() { char szStr[1000] = {0}; char szChushu[10] = {0}; int nData = 0; int nLenth = 0; int nYushu = 0; int nShang = 0; int p1 = 0; int number = 0; /* 输入数据 */ cin >> szStr >> nData; /* 获得字符串的长度 */ nLenth = strlen(szStr); /* 求解,思路是6位一个单位区除 */ while(1) { szChushu[0] = nYushu + 0x30; strncpy(szChushu+1,szStr+p1,1); szChushu[2] = '\0'; number = atoi(szChushu); nShang = number / nData; nYushu = number % nData; /* 当商的第一位是0时,不输出 */ if(p1 != 0 || nShang != 0) { cout << nShang; } /* 指针后移 */ p1++; if(p1 >= nLenth) { break; } } /* 输出余数 */ cout << " " << nYushu << endl; return 0; }
相关文章推荐
- js的表达式,运算符,与优先级
- linux定时任务的设置
- FaxConInit
- hdu 5412 CRB and Queries(树套树模板,区间第K大)
- 大型网站架构技术一览
- Codeforces Gym 100338C C - Important Roads tarjan
- C# .net 抓取网页内容
- instanceof关键字详解
- hihoCoder 1079 离散化(线段树离散化)
- 多线程的简单应用
- Android中实现垂直滑动中水平滑动毫无障碍
- syslinux 制作多系统启动U盘
- shell 解释变量
- Thrift编译错误('::malloc' has not been declared)
- day8: 属性、点语法、KVC
- Memcache缓存 vs 直接File文件缓存
- 用EF实现多条件查询
- super关键字详解
- android 组件ProgressBar实例
- SPOJ 题目705 New Distinct Substrings(后缀数组,求不同的子串个数)