题意
分别给四个数:
一个大数A和要找的每位数DA, 一个大数B和要找的每位数DB。然后将找出来的DA, DB分别组合成新的数PA, PB,加起来就是答案了。
比如:A是1646451,然后DA是6,然后看A里面有两个6,拼起来PA就是66啦!
同理再求出PB加起来就好了。
分析
这道题呢,由于已经给了A, B两个数的范围。所以直接用数来做也行,用字符串做也行。
之所以归类字符串处理,是因为他就是对每一位处理的来着。
总之用两种方法都可以。
代码
// 直接用大数存 A, B
#include <cstdio>
long long A, B, PA, PB;
int DA, DB;
int main()
{
while( ~scanf( "%lld %d %lld %d", &A, &DA, &B, &DB ) ){
PA = 0, PB = 0;
for( ; A > 0 ; A /= 10 ){
if( A % 10 == DA ) PA = PA * 10 + DA;
}
for( ; B > 0 ; B /= 10 ){
if( B % 10 == DB ) PB = PB * 10 + DB;
}
printf( "%lld\n", PA + PB );
}
return 0;
}
// 用字符串存 A, B
#include <cstdio>
char A[105], B[105];
long long PA, PB;
int DA, DB;
int main()
{
while( ~scanf( "%s %d %s %d", A, &DA, B, &DB ) ){
PA = 0, PB = 0;
for( int i = 0; A[i] != '\0' ; i++ ){
if( A[i] - '0' == DA ) PA = PA * 10 + DA;
}
for( int i = 0; B[i] != '\0' ; i++ ){
if( B[i] - '0' == DB ) PB = PB * 10 + DB;
}
printf( "%lld\n", PA + PB );
}
return 0;
}
小结
简单题嘛。

本文解析了一道算法题目“1016.部分A+B”,介绍了如何从给定的大数中筛选特定数字并组合成新数进行相加的方法。使用两种实现方式:一种是直接用大数存储;另一种是用字符串处理。
254

被折叠的 条评论
为什么被折叠?



