HDU这四道题相对来讲都是很简单的,其中主要用到了初等数论的一些基础知识。
2097:Sky数
http://acm.hdu.edu.cn/showproblem.php?pid=2097
题目简要:
通过判断一个四位数十进制、十二进制及十六进制下的各数字之和是否相等来判断它是不是Sky数。
输入:
输入含有一些四位正整数,如果为0,则输入结束。
输出:
若n为Sky数,则输出“#n is a Sky Number.”,否则输出“#n is not a Sky Number.”。每个结果占一行。注意:#n表示所读入的n值。
范例输入:
2992
1234
0
范例输出:
2992 is a Sky Number.
1234 is not a Sky Number.
解析:
仔细阅读题目后可以得到一个很清晰的思路,即写一个函数用于转换进制,然后再对转换后的三个数字进行比较即可。
代码:
#include <iostream>
using namespace std;
string trans(int n, int b)
{
char a[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
string r = "";