HDU2057aA + B again

来源:互联网 发布:微信打开未备案域名 编辑:程序博客网 时间:2024/05/20 03:43

这道题是十六进制的大数加法,c里面有十六进制的读取和输出,所以不用考虑进制转换,然后不大于15位十六进制数,int二进制32位,所以不能用int,可以换成__int 64,或者是longlong.

用__int64的代码

#include <stdio.h>int main(){__int64 a,b;while(~scanf("%I64X%I64X",&a,&b)){a +=b;if(a<0){printf("-%I64X\n",-a);}else  printf("%I64X\n",a);}return 0;}

看到大家有争议,要用 long long,下面实验了一下。

/*hdu2057A=B again method of long long */ #include <stdio.h>int main(){long long a,b;while(scanf("%llx%llx",&a,&b)!=EOF){a += b;if(a<0)printf("-%llx",-a);elseprintf("%llx", a);} return 0;}

变量定义输出方式gcc(mingw32)g++(mingw32)gcc(linux i386)g++(linux i386)MicrosoftVisual C++ 6.0long long“%lld”错误错误正确正确无法编译long long“%I64d”正确正确错误错误无法编译__int64“lld”错误错误无法编译无法编译错误__int64“%I64d”正确正确无法编译无法编译正确

不同的操作系统有区别,要记得

原创粉丝点击