HDOJ 2057 A + B Again

题目地址:

http://acm.hdu.edu.cn/showproblem.php?pid=2057

失败到了极点~~~做过一次,结果又忘了~~~
亏自己还去写了个16进制转10进制以及10进制转16进制输出的函数。。。。
好吧,我太失败了!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 // 失败,居然就几行代码....
#include <iostream>
 
using namespace std;
int main()
{
	__int64 a, b;
	while(cin >> hex >> a >> b)
	{
		if(a+b < 0)
			cout << "-" << uppercase << hex << -(a+b) << endl;
		else
			cout << uppercase << hex << (a+b) << endl;
	}
	return 0;
}

==============================================================
cin >> hex >> a >> b; // 十六进制
cin >> dec >> a; //十进制

cin >> oct >>a; //八进制

%I64X %I64o %I64d %I64u分别表示十六进制,8进制,10进制,无符号位。注意x大写则输出时字母大写,x小写则输出时字母小写。
============================================================
再把我写的丢出来:
(汗,真不好意思贴出来的。。。一个简单的题居然写了那么多~~~)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 // Author: Tanky Woo
// HDOJ 2057
// 好吧!
// 大数~~~失败!
 
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
 
__int64 hex2ten(char *a)
{
	int len = strlen(a);
	int flag = 1;
	int i = 0;
	if(a[0] == '-')
	{
		++i;
		flag = 0;
	}
	else if(a[0] == '+')
		++i;
	__int64 sum = 0;
	for(; i<len; ++i)
	{
		sum *= 16;
		if(a[i]>='0' && a[i]<='9')
			sum += a[i]-'0';
		else 
			sum += (a[i]-'A')+10;
	}
	if(flag)
		return sum;
	else
		return -sum;
}
 
void ten2hex(__int64 num)
{
	if(num<0)
	{
		num = -num;
		printf("-");
	}
	int cnt = 0;
	char _hex[16];
	if(num == 0)
	{
		printf("0\n");
		return;
	}
	while(num)
	{
		int temp = num%16;
		if(temp>9)
			_hex[cnt++] = 'A'+temp-10;
		else
			_hex[cnt++] = temp+'0';
		num /= 16;
	}
	for(int i=cnt-1; i>=0; --i)
		printf("%c", _hex[i]);
	printf("\n");
}
 
char a[16], b[16];
int main()
{
	while(scanf("%s %s", a, b) != EOF)
	{
		__int64 num1 = hex2ten(a);
		__int64 num2 = hex2ten(b);
		//printf("%d %d\n", num1, num2);
		__int64 num = num1+num2;
		ten2hex(num);
		memset(a, 0, sizeof(a));
		memset(b, 0, sizeof(b));
	}
	return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

《HDOJ 2057 A + B Again》有63个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注