PTA 1016 部分A+ B (C语言实现)简单粗暴

主要就是一个数字往字符串转换,不知道为啥ultoa()函数用不了,所以自己写了一个

#include <iostream>
#include <cstring>
#include <cstdio>
static int myultoa_(long long n,char str[]);
void myultoa(long long n,char str[]);
static int i = 0;
int main(void)
{
	long long n1,n2;
	int D1,D2;
	char s1[20],s2[20];		//存放转换字符串
	int t1[9] = {0},t2[9] = {0}; 	//计算个数

	scanf("%lld %d %lld %d",&n1,&D1,&n2,&D2);
	
	myultoa(n2,s2);
	myultoa(n1,s1);

	unsigned int index = 0,j = 0;
	long long PA = 0, PB = 0;
	while (index < strlen(s1) || j <strlen(s2))
	{
		if (index < strlen(s1)) t1[s1[index++] - '0']++; 
		if (j < strlen(s2)) t2[s2[j++] - '0']++;
	}

	
	while (t1[D1]--) PA = PA * 10 + D1;
	while (t2[D2]--) PB = PB * 10 + D2;
	
	printf("%lld",PA+PB);

	return 0;
}
static int myultoa_(long long n,char str[])
{
	if (n / 10) myultoa_(n / 10,str);
	str[i++] = n % 10 + '0';
	return i;
}
void myultoa(long long n,char str[])
{
	int t = myultoa_(n,str);
	i = 0;
	str[t] = '\0';
}

突然想到在转换的时候就可以存入表中计算个数,那应该代码量会更少一点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值