hdu 2057
PS:一开始我画蛇添足的用字符串来做....超麻烦...贴个我做的..
代码:
#include "stdio.h"
#include "string.h"
#include "math.h"
long long cal(char a[]);
long long back(long long a,char b[],long long &flag);
char c[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int main(){
char a[110],b[110],sum[110];
long long sum1,i,s,flag;
while(~scanf("%s%s",&a,&b)){
sum1=cal(a)+cal(b); //两个十六进制数转换成十进制数相加
s=back(sum1,sum,flag); //flag是用来判断正负
if(flag==0){
for(i=s;i>=0;i--){
printf("%c",sum[i]);
}
puts("");
}
else{
printf("-");
for(i=s;i>0;i--){
printf("%c",sum[i]);
}
puts(""); }
}
return 0;
}
long long back(long long a,char b[],long long &flag){ //从十进制数变到十六进制数
long long i=0,k,t;
flag=0;
if(a>=0){
t=a;
while(t/16!=0){
k=t%16;
b[i++]=c[k];
t=t/16;
}
k=t%16;
b[i]=c[k];
}
else{
flag=1;
t=-a;
b[i++]='-';
while(t/16!=0){
k=t%16;
b[i++]=c[k];
t=t/16;
}
k=t%16;
b[i]=c[k];
}
return i;
}
long long cal(char a[]){ //从十六进制数变成十进制数
long long i,s,j,sum=0;
if(a[0]=='-'){
s=strlen(a);
for(i=1;i<s;i++){
for(j=0;j<16;j++){
if(a[i]==c[j]){
sum+=j*pow(16,s-i-1);
break;
}
}
}
sum=-sum;
}
else if(a[0]=='+'){
s=strlen(a);
for(i=1;i<s;i++){
for(j=0;j<16;j++){
if(a[i]==c[j]){
sum+=j*pow(16,s-i-1);
break;
}
}
}
}
else{
s=strlen(a);
for(i=0;i<=s-1;i++){
for(j=0;j<16;j++){
if(a[i]==c[j]){
sum+=j*pow(16,s-i-1);
break;
}
}
}
}
return sum;
}
PS:后来才知道可以用%X输入十六进制的整数...所以AC代码为下列
代码:
#include "stdio.h"
int main(){
long long a,b,c;
while(~scanf("%llX%llX",&a,&b)){
c=a+b;
if(c<0) {printf("-"); c=-c;}
printf("%llX\n",c);
}
return 0; }
hdu 2057的更多相关文章
- hdu 2057 A+B
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2057 For each test case,print the sum of A and B in h ...
- hdu 2057 A+B Again
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2057 题目分析:涉及到16进制内的加法,可以用%I64x直接来处理,要注意到16进制中负数是用补码来表 ...
- HDU 2057 十六进制加减法
http://acm.hdu.edu.cn/showproblem.php?pid=2057 水题,%I64X 长整形十六进制输入输出 #include<stdio.h> in ...
- 题解报告:hdu 2057 A + B Again
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2057 问题描述 我们的HDOJ必须有许多A + B问题,现在又有新的问题出现. 给你两个十六进制整数, ...
- HDU——PKU题目分类
HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...
- [转] HDU 题目分类
转载来自:http://www.cppblog.com/acronix/archive/2010/09/24/127536.aspx 分类一: 基础题:1000.1001.1004.1005.1008 ...
- HDU ACM 题目分类
模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 104 ...
- HDU 5643 King's Game 打表
King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
随机推荐
- js简单模仿队列
window.meng = window.meng || {}; (function () { var items = []; meng.queue = { /** * * @param {Funct ...
- CentOS6安装python2.7
第一次用centOS,感觉好高大上,安装了差不多一个半小时,学习了挺多命令的 1. 检查centOS中默认的python版本,一般是python2.6. 命令:python –v 2. 安装GCC ...
- Junit4入门
eclipse自带junit包,可右键直接新建junit类 静态引入:import static org.junit.Assert.* assert.*是类,静态引入会引入assert里的所有静态方法 ...
- javaWeb学习之运用myeclipse结合tomcat开发一些简单的jsp和service
servlet是什么? servlet是java服务器端编程.不同于我们之前写的一般的java应用程序,Servlet程序是运行在服务器上的,服务器有很多种.....现在只是用过 tomcat ...
- Java 流笔记
BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取.操作: Reader BufferedWriter 将文本写入字符输出流,缓冲各个字符,从而提供单 ...
- 在CentOS 7 MySQL / MariaDB
在CentOS7中,MariaDB 替代了MySQL;更多复杂的疑问可以在这里查看 MariaDB versus MySQL – Compatibility Install MySQL / Mari ...
- 【转载】Gambit使用教程
第一章 Gambit使用 Gambit介绍 网格的划分使用Gambit软件,首先要启动Gambit,在Dos下输入Gambit <filemane>,文件名如果已经存在,要加上参数-old ...
- Xcode中的几个常用文件路径
在iOS开发中有时候需要知道一些文件的路径,这里总结如下: 路径查找第一步如图: 1.模拟器的路径:/Applications/Xcode.app/Contents/Developer/Platfor ...
- 使用DD_belatedPNG让IE6支持PNG透明图片
使用DD_belatedPNG让IE6支持PNG透明图片 众所周知IE6不支持透明的PNG图片,而PNG图片在Web设计方面表现力上,具有其它图形格式所达不到的效果,IE6这一致命缺陷极大地限制了We ...
- DIV使用tabindex获得事件详解 移动div
添加 tabindex='-1' 属性: 默认:获取不到焦点事件(blur) 1 <div class="wl-product" id="wl-product&qu ...