1513 - 又一版 A+B

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。

题目输入

输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。

当m为0时输入结束。

题目输出

输出格式:每个测试用例的输出占一行,输出A+B的m进制数。

输入/输出样例

输入格式

2 4 5
8 123 456
0

输出格式

1001
1103

C语言解答

#include <stdio.h>
#include <stdlib.h>
void numchange(unsigned int m,unsigned int num)
{

	unsigned int u,v,count = 0;
	int i;
	char *p = (char *)malloc(sizeof(char));
	if(num == 0)
	{
		printf("0\n");
	}
	else
	{
		while(num)
		{
			
			v = num % m;
			u = num / m;
			*(p+count) = v + '0';
			num = u;	
			count ++;
			p = (char *)realloc(p,sizeof(char)*(count+1));
		}
		*(p+count) = '\0';
		for(i=count-1;i>=0;i--)
		{
			printf("%c",*(p+i));
		}
		printf("\n");
		free(p);		
	}

}
int main(void)
{
	unsigned int m;
	unsigned int A,B;
	scanf("%d",&m);
	while(m)
	{
		scanf("%u%u",&A,&B);
		numchange(m,A+B);
		scanf("%u",&m);
	}
	return 0;
}

C++解答

#include<stdio.h>

void change(long long s,long long m)
{
	if(s)
	{
		change(s/m,m);
		printf("%lld",s%m);
	}
}

int main()
{
	long long a,b,m,s;
	while(scanf("%lld",&m),m)
	{
		scanf("%lld%lld",&a,&b);
		s=a+b;
		if(s==0)
			printf("0");
		else
			change(s,m);
		printf("\n");
	}
	return 0;
}