<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++)
導致了錯誤!不過,自己獨立找到了問題。
反思:
多一個變量沒關係,千萬不要偷懶的去重複調用一個函數,
特別是這個函數返回值有幾個用途的時候
*/