1016. 部分A+B (15)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章