<h1>1016. 部分A+B (15)</h1><div class="rfloat" id="problemInfo"><div class="limit"><div class="key">时间限制 </div><div class="value">100 ms
</div></div><div class="limit"><div class="key">内存限制 </div><div class="value">65536 kB
</div></div><div class="limit"><div class="key">代码长度限制 </div><div class="value">8000 B
</div></div><div class="checker"><div class="key">判题程序 </div><div class="value"><span title="纯文本对比">Standard</span> </div></div><div class="key">作者 </div><div class="value">CHEN, Yue
</div></div><div id="problemContent"><p>正整数A的“D<sub>A</sub>(为1位整数)部分”定义为由A中所有D<sub>A</sub>组成的新整数P<sub>A</sub>。例如:给定A = 3862767,D<sub>A</sub> = 6,则A的“6部分”P<sub>A</sub>是66,因为A中有2个6。</p><p>现给定A、D<sub>A</sub>、B、D<sub>B</sub>,请编写程序计算P<sub>A</sub> + P<sub>B</sub>。</p><p><strong> 输入格式: </strong></p><p>输入在一行中依次给出A、D<sub>A</sub>、B、D<sub>B</sub>,中间以空格分隔,其中0 < A, B < 10<sup>10</sup>。</p><p><strong> 输出格式: </strong></p><p>在一行中输出P<sub>A</sub> + P<sub>B</sub>的值。 </p><strong>输入样例1:</strong><pre>3862767 6 13530293 3
输出样例1:
399
输入样例2:
3862767 1 13530293 8
输出样例2:
0
#include <stdio.h>
#include <string.h>
int main(void)
{
char A[10], B[10];
int a, b;
int i;
int sum_a = 0, sum_b = 0;
int lenA = 0, lenB = 0;
scanf("%s %d %s %d", &A, &a, &B, &b);
lenA = strlen(A);
lenB = strlen(B);
// A[]中字符转换为数字
for(i = 0; i < lenA; i++)
A[i] -= '0';
// {/* 为了测试 for(i = 0; i < strlen(A); i++)
// 这个判断到底出了什么问题,特在这里调试
// 将上面那个循环注释以后,调试下面的代码
// 测试用例 : 10001 1 10000 1
// */
// for(i = 0; i < strlen(A); i++)
// A[i] -= '0';
// /*
// 调试之后发现,
// 第一轮循环 A = "\001\060\060\060\061\000\000\000)\030"
// 第二轮循环 A = "\001\000\060\060\061\000\000\000)\030"
// strlen函数遇到 \000 就终止了 所以 strlen(A) == 2
// 所以循环就终止了, 并没有达到将A[]中字符,全部!,转换为数字的目的
// */
// }
for(i = 0; i < lenA; i++)
{
if(A[i] == a)
sum_a = sum_a *10 + A[i];
}
// B[]中字符转换为数字
for(i = 0; i < lenB; i++)
B[i] -= '0';
for(i = 0; i < lenB; i++)
{
if(B[i] == b)
sum_b = sum_b *10 + B[i];
}
printf("%d", sum_a + sum_b);
return 0;
}
/* 35'18" AC
哎, 我也是醉了, 图省事在A[]中字符转换为数字时,直接用了下面的句子
for(i = 0; i < strlen(A); i++)
导致了错误!不过,自己独立找到了问题。
反思:
多一个变量没关系,千万不要偷懒的去重复调用一个函数,
特别是这个函数返回值有几个用途的时候
*/