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++)
	导致了错误!不过,自己独立找到了问题。
	反思:
		多一个变量没关系,千万不要偷懒的去重复调用一个函数,
		特别是这个函数返回值有几个用途的时候 
*/

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