我是靠谱客的博主 鲜艳小丸子,最近开发中收集的这篇文章主要介绍HDU2057A + B Again,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

HDU 水题 A + B Again

明明是一道水题,我却傻不拉几的将16进制转化为10进制,然后10进制加减再16进制输出
我们完全可以用C当中的16进制输入输出
%x进行输入输出
但是考虑到时64位,因为32位会溢出的
scanf("%llx%llx",&a,&b)即可

printf("%llx",a+b)会存在问题的
1,输出时x要大写 %llX 可以输出大写字母,
2,输出时不会输出负数(只输出无符号)的,所以需要判断

#include<stdio.h>
int main()
{
	//__int64 a,b;
	long long a,b;//与__int64 a,b 等价
	while(scanf("%llx%llx",&a,&b)!=EOF)
	{
		long long result = a+b;
		if(result>=0)
			printf("%llXn",result);
		else
			printf("-%llXn",-result);
	}
	return 0;
}

当然作为我一开始愚蠢的行为,我表示我真的是太笨啦!
我想在本篇博客上记录一下,有兴趣的也可以看一下!

#include<stdio.h>
#include<string.h>
#include<math.h>
void fun(int t)
{
	if(t==0)
		return ;
	int temp=t%16;
	t=t/16;
	fun(t);
	switch(temp)
	{
		case 10:printf("a");break;
		case 11:printf("b");break;
		case 12:printf("c");break;
		case 13:printf("d");break;
		case 14:printf("e");break;
		case 15:printf("f");break;
		default:printf("%c",temp+'0');break;
	}
}
		
int main()
{
	char a[17],b[17];
	int lena,lenb;
	while(scanf("%s%s",a,b)!=EOF)
	{
		getchar();
		lena=strlen(a);
		lenb=strlen(b);
		if(lena>=15||lenb>=15)
			break;
		int i,j;
		int suma=0,sumb=0,sum;
		for(i=lena-1;i>=0;i--)
		{
			switch(a[i])
			{
				case 'a':
				case 'A':suma+=10*(int)(pow(16,lena-i-1));break;
				case 'b':
				case 'B':suma+=11*(int)(pow(16,lena-i-1));break;
				case 'c':
				case 'C':suma+=12*(int)(pow(16,lena-i-1));break;
				case 'd':
				case 'D':suma+=13*(int)(pow(16,lena-i-1));break;
				case 'e':
				case 'E':suma+=14*(int)(pow(16,lena-i-1));break;
				case 'f':
				case 'F':suma+=15*(int)(pow(16,lena-i-1));break;
				case '+':suma=suma;break;
				case '-':suma=-suma;break;
				default:suma+=((a[i]-'0')*(int)(pow(16,lena-i-1)));break;
			}
		}
		for(j=lenb-1;j>=0;j--)
		{
			switch(b[j])
			{
				case 'a':
				case 'A':sumb+=10*(int)(pow(16,lenb-j-1));break;
				case 'b':
				case 'B':sumb+=11*(int)(pow(16,lenb-j-1));break;
				case 'c':
				case 'C':sumb+=12*(int)(pow(16,lenb-j-1));break;
				case 'd':
				case 'D':sumb+=13*(int)(pow(16,lenb-j-1));break;
				case 'e':
				case 'E':sumb+=14*(int)(pow(16,lenb-j-1));break;
				case 'f':
				case 'F':sumb+=15*(int)(pow(16,lenb-j-1));break;
				case '+':sumb=sumb;break;
				case '-':sumb=-sumb;break;
				default:sumb+=((b[j]-'0')*(int)(pow(16,lenb-j-1)));break;
			}
		}
		sum=suma+sumb;
		if(sum<0)
		{
			sum=-sum;
			printf("-");
			fun(sum);
			printf("n");
		}
		else if(sum==0)
			printf("%dn",0);
		else
		{
			fun(sum);
			printf("n");
		}
	}
	return 0;
}

最后

以上就是鲜艳小丸子为你收集整理的HDU2057A + B Again的全部内容,希望文章能够帮你解决HDU2057A + B Again所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部