题目

题目地址:PAT 乙级 1017

题解

粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的;

具体分析一下本题;

因为题设中的除数(n)是一位整数,因此大幅简化了整个运算过程;在整个运算中最为重要的就是中间变量(sum),判断中间变量sum是否足够大能被除数n整除,这也是本题的关键所在;

通过是否判断sum是否能被整除,可以分为以下两种情况:

1. sum == 0 && num[i] < n (当前运算位num[i]小于除数)

2. 其余情况(sum == 0 && num[i] >= n  sum != 0 && num[i] < n  sum != 0 && num[i] >= n

第一种情况,sum当前值不够除被除数,因此要作为一种情况单独处理;

第二种情况,sum的值无论怎样都够除除数n,因此可以全部作为一类情况处理;(如果sum不为0,说明是上一次运算没有除尽的部分,又因为是上一位的剩余,所以要乘以10,那么无论怎样都够除)

之后我们再来分析一下两种不同情况下的处理方式:

1. 因为中间变量不够除,也就是说,当前操作位在不是首位的情况下会商0;接下来需要改变中间变量sum的值,因此操作位后移一位加到sum;(特别注意,因为要后移一位,所以需要判断边界防止越界操作)

2. 无论上一位是否有剩余,都把上一位的值乘以10,加上当前操作位的值;

代码

 #include <iostream>
#include <string>
using namespace std; int main() {
string num;
int n = , sum = ;
cin >> num >> n;
for (int i = ; i < num.size(); i++) {
if (sum == && int(num[i]) - < n && i != num.size() - ) {
if (i != )
cout << '';
sum += (int(num[i]) - ) * ;
i++;
sum += int(num[i]) - ;
}
else {
sum *= ;
sum += int(num[i]) - ;
}
cout << sum / n;
sum %= n;
}
cout << ' ' << sum << endl; return ;
}

PAT 乙级 1017的更多相关文章

  1. PAT乙级 1017. A除以B (20)

    1017. A除以B (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求计算A/B,其中A是不超过 ...

  2. PAT 乙级 1017 A除以B (20) C++版

    1017. A除以B (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求计算A/B,其中A是不超过 ...

  3. PAT乙级1017

    1017 A除以B (20 分)   本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: 输 ...

  4. C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...

  5. PAT乙级真题及训练题 1025. 反转链表 (25)

    PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...

  6. PAT甲级1017. Queueing at Bank

    PAT甲级1017. Queueing at Bank 题意: 假设一家银行有K台开放服务.窗前有一条黄线,将等候区分为两部分.所有的客户都必须在黄线后面排队,直到他/她轮到服务,并有一个可用的窗口. ...

  7. PAT 乙级 1024

    题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...

  8. PAT 乙级 1015

    题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...

  9. PAT 乙级 1003

    题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...

随机推荐

  1. UVa 10652(旋转、凸包、多边形面积)

    要点 凸包显然 长方形旋转较好的处理方式就是用中点的Vector加上旋转的Vector,然后每个点都扔到凸包里 多边形面积板子求凸包面积即可 #include <cstdio> #incl ...

  2. Restful 4 -- 认证组件、权限组件、频率组件、url注册器、响应器、分页器

    一.认证组件.权限组件.频率组件总结:  只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件 1.认证组件格式 写一个认 ...

  3. tomcat内存配置

    -Xms521M-Xmx1024M-XX:PermSize=64M -Xms256m -Xmx1024m -XX:MaxPermSize=256m

  4. 【Unity3D】简要分析unity3d中剪不断理还乱的yield

    在学习unity3d的时候很容易看到下面这个例子: void Start () { StartCoroutine(Destroy()); } IEnumerator Destroy(){ yield ...

  5. 经典SQL语句集锦(收藏版)

    文章来源:http://www.cnblogs.com/herbert/archive/2010/07/02/1770062.html SQL分类: DDL—数据定义语言(CREATE,ALTER,D ...

  6. SQLServer 索引的使用情况

    —在优化查询SQL语句,查看索引使用情况SQL语句: select db_name(database_id) as N'数据库名称', object_name(a.object_id) as N'表名 ...

  7. 父类和子类以及super关键字

    super和this关键字的特点类似:super代表的是父类对象的引用. 当子父类的成员出现同名时,可以通过super来进行区分. 子类的构造方法中,通过super关键字调用父类的构造方法. publ ...

  8. log4j-初识

    1.配置文件介绍: 1.1. 控制台输出:log4j.rootLogger=DEBUG, Console ,File #Console log4j.appender.Console=org.apach ...

  9. HDU 1085 Holding Bin-Laden Captive! 活捉本拉登(普通型母函数)

    题意: 有面值分别为1.2.5的硬币,分别有num_1.num_2.num_5个,问不能组成的最小面值是多少?(0<=每种硬币个数<=1000,组成的面值>0) 思路: 母函数解决. ...

  10. Hybris UI的Route(路由)实现

    登录Hybris前台,在product catalog里选择Digital camera: 点击某个产品进入明细页面: 注意产品明细这个url: 这个明细页面的路由和SAP UI5的路由思路很像. 在 ...