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. ...
随机推荐
- 能源项目xml文件标签释义--DataSource
<bean id="dataSource1" class="org.apache.tomcat.jdbc.pool.DataSource" destroy ...
- Mybatis学习(贰)
一.类型别名typeAlias 1.在mapper文件中:实体作为resultType,多次书写在配置文件中,每次需要书写权限名(com.baizhi.yanxj.entity.User),代码比较繁 ...
- 浏览器编码的函数简介escape(),encodeURI(),encodeURIComponent()
1.escape() escape()是js编码函数中最古老的一个.虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起. 实际上,escape()不能直接用于 ...
- 关于GET请求带Body的问题
今天在进行接口联调时遇到这个问题了,当时是很茫然的,因为从来没遇过. 后来又搜索了一下GET和Post的区别. 然后看见了这篇文章.不再以讹传讹,GET和POST的真正区别 我有限的知识还是无法去确定 ...
- 【CITE】C#目录、文件、文件夹操作
1. 在一个目录下创建一个文件夹 if (!System.IO.Directory.Exists(path)) System.IO.Directory.CreateDirectory(path); ...
- IE9以上 CSS文件因Mime类型不匹配而被忽略 其他浏览器及IE8以下显示正常
什么是Mime类型? MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名 ...
- input上传图片预览
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- Columbia遗留问题
本来Columbia只是按照顺序,导航不可以点击,数组按照顺序push的小东西 在leader的要求下,要变成导航可以点击,无顺序的一团浆糊,经过了大概长达两天(我是不是太适合做程序!)的反复纠结,浆 ...
- C语言中static变量详解
Static翻译出来是“静态”“静止”的意思,在C语言中的意思其实和它的本意差不多,表示“静态”或者“全局”的意思,用来修饰变量和函数.经static修饰过后的变量或者函数的作用域或者存储域会发生变化 ...
- iOS 常见 Crash 及解决方案
一.访问了一个已经被释放的对象 在不使用 ARC 的时候,内存要自己管理,这时重复或过早释放都有可能导致 Crash. 例子 NSObject * aObj = [[NSObject alloc] i ...