PAT B1016 部分A+B
2016-07-23 11:57
246 查看
题目地址:https://www.patest.cn/contests/pat-b-practise/1016
题目描述:
正整数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
题意:
输入四个数 A、DA、B、DB,其中 DA 跟 DB 都是单个数字。将 A 中的数字 DA 全部拼在一起得到 PA,将 B 中的数字 DB 全都拼在一起得到 PB,输出 PA + PB。
样例解释:
样例 1:
A = 3862767,DA = 6 ;
B = 13530293 ,DB = 3
这样 6 在 A 中出现了两次,因此 PA = 66 ;而 3 在 B 中出现了三次,因此 PB = 333
最后输出 66 + 333 = 399。
样例 2:
A = 3862767,DA = 1;
B = 13530293,DB = 8.
这样 1 在 A 中出现了 0 次,因此 PA = 0;而 8 在 B 中出现了 0 次,因此 PB = 0。
最后输出 0 + 0 = 0。
解题思路:
令 PA 初值均为 0 ,枚举 A 中的每一位,如果该位恰好等于 DA,则令 PA = PA * 10 + DA,这样当枚举完 A 中的每一位之后,就得到了 PA。
同理,可以得到 PB。最后输出 PA + PB 即可。
注意:由于题目中给出的范围是10的10次方以内,这个范围是超过了 int 的,因此需要使用 long long 来存放 A 和 B。不过也可以用字符串来存储 A 和 B,方法其实都是一样的。
C++完整代码如下:
python 完整代码如下:
题目描述:
正整数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
题意:
输入四个数 A、DA、B、DB,其中 DA 跟 DB 都是单个数字。将 A 中的数字 DA 全部拼在一起得到 PA,将 B 中的数字 DB 全都拼在一起得到 PB,输出 PA + PB。
样例解释:
样例 1:
A = 3862767,DA = 6 ;
B = 13530293 ,DB = 3
这样 6 在 A 中出现了两次,因此 PA = 66 ;而 3 在 B 中出现了三次,因此 PB = 333
最后输出 66 + 333 = 399。
样例 2:
A = 3862767,DA = 1;
B = 13530293,DB = 8.
这样 1 在 A 中出现了 0 次,因此 PA = 0;而 8 在 B 中出现了 0 次,因此 PB = 0。
最后输出 0 + 0 = 0。
解题思路:
令 PA 初值均为 0 ,枚举 A 中的每一位,如果该位恰好等于 DA,则令 PA = PA * 10 + DA,这样当枚举完 A 中的每一位之后,就得到了 PA。
同理,可以得到 PB。最后输出 PA + PB 即可。
注意:由于题目中给出的范围是10的10次方以内,这个范围是超过了 int 的,因此需要使用 long long 来存放 A 和 B。不过也可以用字符串来存储 A 和 B,方法其实都是一样的。
C++完整代码如下:
#include<cstdio> int main(){ long long a, b, da, db; scanf("%lld%lld%lld%lld", &a, &da, &b, &db); long long pa = 0, pb = 0; while(a != 0){ //枚举 a 的每一位 if(a % 10 == da) pa = pa * 10 + da; //若当前位为 da,给 pa 增加一位 da a = a / 10; } while(b != 0){ //枚举 b 的每一位 if(b % 10 == db) pb = pb * 10 + db; b = b / 10; } printf("%lld\n", pa + pb); return 0; }
python 完整代码如下:
#coding=utf-8 def count(a,b): count=0 for i in a: if i==b: count=count*10+int(b) return count s=raw_input() a,b,c,d=s.split(" ") print count(a,b)+count(c,d)
相关文章推荐
- PAT 乙级真题 1005. 继续(3n+1)猜想
- PAT 乙级1027 天梯 L1-002 打印沙漏
- 1032. 挖掘机技术哪家强
- PAT乙级 1036 跟奥巴马一起编程
- PAT B1011 A+B和C
- PAT B1026 程序运行时间
- 1001. 害死人不偿命的(3n+1)猜想 (15)
- 【解题报告】1004. 成绩排名
- 【解题报告】1003. 我要通过!
- 【解题报告】1002. 写出这个数
- 【解题报告】1001. 害死人不偿命的(3n+1)猜想
- PAT乙级-1046. 划拳(15)
- pat 乙级题目目录
- 1068. 万绿丛中一点红(20)
- 1062. 最简分数(20)
- 1060. 爱丁顿数(25)
- 1067. 试密码(20)
- 1055. 集体照 (25)
- 1054. 求平均值 (20)
- 1052. 卖个萌 (20)