A+B (杭电十六进制版本)

A+B Coming

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 8456 Accepted Submission(s): 3839
 

Problem Description

Many classmates said to me that A+B is must needs.
If you can’t AC this problem, you would invite me for night meal. ^_^

 

Input

Input may contain multiple test cases. Each case contains A and B in one line.
A, B are hexadecimal number.
Input terminates by EOF.

 

Output

Output A+B in decimal number in one line.

 

Sample Input

1 9
A B
a b

 

Sample Output

10
21
21

 

Author

威士忌

 

Source

HZIEE 2007 Programming Contest

 

Recommend

lcy

 

A + B即将来临

时间限制:1000/1000 MS(Java / Others)内存限制:32768/32768 K(Java / Others)
提交总数:8456可接受的提交:3839
 

问题描述

许多同学对我说,A + B是必须的。
如果你不能解决这个问题,你会邀请我吃晚餐。^ _ ^

 

输入

输入可能包含多个测试用例。每个案例在一行中包含A和B. 
A,B是十六进制数。
输入以EOF结束。

 

产量

在一行中以十进制数输出A + B.

 

样本输入

1 9
AB
AB

 

样本输出

10
21
21

 

作者

威士忌

 

资源

HZIEE 2007编程大赛

 

推荐

LCY

 

我的思路是把输入接受为字符串string,从低位到高位每位成*(16^(n-1))这里的16的n次方我使用的是快速幂,而字符转数值我使用的是map函数

#include<stdio.h>
//#include<iostream>
#include<string.h>
#include<map>
using namespace std;
long long sww(int b){    //快速求幂
	int ans=1,a=16;
	while(b!=0){
		if(b&1!=0)ans*=a;
		a*=a;
		b>>=1;
	}
	return ans;
}
int main(){
	map<char,int>Mymap;
	Mymap['0']=0;
	Mymap['1']=1;
	Mymap['2']=2;
	Mymap['3']=3;
	Mymap['4']=4;
	Mymap['5']=5;
	Mymap['6']=6;
	Mymap['7']=7;
	Mymap['8']=8;
	Mymap['9']=9;
	Mymap['a']=10;
	Mymap['b']=11;
	Mymap['c']=12;
	Mymap['d']=13;
	Mymap['e']=14;
	Mymap['f']=15;
	Mymap['A']=10;
	Mymap['B']=11;
	Mymap['C']=12;
	Mymap['D']=13;
	Mymap['E']=14;
	Mymap['F']=15;
	char a[1000],b[1000];
	int A,B;
	while(scanf("%s%s",a,b)!=EOF){
		long long ans=0;
		A=strlen(a);
		B=strlen(b);
		for(int i=A-1,s=0;i>=0;i--,s++){
			ans+=Mymap[a[i]]*sww(s);
		}
		for(int i=B-1,s=0;i>=0;i--,s++){
			ans+=Mymap[b[i]]*sww(s);
		}
		printf("%lld\n",ans);
	}
	return 0;
}

当然我也知道 scanf("%x%x",&a,&b);可以直接输入16进制数(●'◡'●)

(%x---16进制,%o---8进制 %c---字符 %s---字符串 %d ---int %ld---long  %lld --- long long %f--float %lf---double)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值