乙级PAT的1016
乙级的题相对比较简单,我也是主要联系写代码的格式,而不是联系算法。
1016 部分A+B (15 point(s))
正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。
现给定 A、DA、B、DB,请编写程序计算 PA+PB。
输入格式:
输入在一行中依次给出 A、DA、B、DB,中间以空格分隔,其中 0<A,B<1010。
输出格式:
在一行中输出 PA+PB 的值。
输入样例 1:
3862767 6 13530293 3
输出样例 1:
399
输入样例 2:
3862767 1 13530293 8
输出样例 2:
0
我写的代码是
#include<cstdio> int main() { int A, DA, B, DB, PA=0, PB=0; int bit; scanf("%d%d%d%d", &A, &DA, &B, &DB); while (A||B) { bit = A % 10; A = A / 10; if (bit == DA) PA = PA * 10 + DA; bit = B % 10; B = B / 10; if (bit == DB) PB = PB * 10 + DB; } printf("%d", PA + PB); return 0; }
其中cstdio是stdio.h的C++版本。
我写的算法复杂度好像还比教材上的好,教材上分别多A和B进行遍历,我这个遍历次数较长的那个数,即便较短的那个数遍历完了,继续遍历也只是0,并不影响结果。嘿嘿嘿
不过教材上定义A,B,PA,PB都是用的long long,我觉得没有必要,题目上没说,我用的int也过了。
还有一个问题,就是
VS点本地调试的时候控制器窗口总是一闪而过。不像VC那样按任意键继续,我就google了一下。
用只运行不调试就好。
之后如果要用,按ctrl+F5也行。也可以把这个弄到工具栏里。
1,点这样的小三角
2、添加或移除按钮->自定义
然后再文本编辑器里添加命令
3、找到 调试->开始执行(不调试)
确定关闭就好了,就在工具栏里了,用着比较方便