编程题:十六进制数字判断(is_hex)
> The **hexadecimal** (also base 16 or simply hex) numeral system is a positional numeral system that represents numbers using a radix (base) of 16.
“判断字符是否可作为十六进制数字”
// 这这这也太水了吧?十六进制数字就是[0-9A-Fa-f]嘛。
#### 输入规格
- 输入由多组数据构成。
- 每组数据开头有一个非负整数N表示后续数据的行数,然后换行。
- 之后有N行字符串,请**整行读入**,并统计**字符总数、可作为十六进制数字的字符数**
- N=0时表示输入结束,该组无需处理。
- 显然这是个很基础的工具函数,所以要尽量快。据说最后一个测试点有几十MB呢。
#### 输出规格
- 对**每组数据**输出字符总数、可作为十六进制数字的字符数,间隔一个空格,然后换行。
#### 样例输入
in
3
0123456789
ABCDEF
abcdefZ
1
:)
0
#### 样例输出
out
23 22
2 0
#### 样例解释
- 第1组有3行,共23个字符,能作为十六进制数字的有22个。
- 第2组有1行,共2个字符,能作为十六进制数字的有0个。
- 最后的0表示结束。
#### 参考代码
cpp
#include <iostream>
using namespace std;
inline bool is_hex(char c){
return false; // TODO
}
int main(){
ios::sync_with_stdio(false); // 这两行能极大加速C++的输入性能。
cin.tie(nullptr); // 代价是不能混用scanf/printf。
for(int n; cin >> n, cin.get(), n > 0;){
int t = 0, h = 0;
for(string s; n--;){
getline(cin, s);
t += s.size();
for(char c : s){
if(is_hex(c)){
++h;
}
}
}
cout << t << ' ' << h << endl;
}
}
答案:若无答案欢迎评论
“判断字符是否可作为十六进制数字”
// 这这这也太水了吧?十六进制数字就是[0-9A-Fa-f]嘛。
#### 输入规格
- 输入由多组数据构成。
- 每组数据开头有一个非负整数N表示后续数据的行数,然后换行。
- 之后有N行字符串,请**整行读入**,并统计**字符总数、可作为十六进制数字的字符数**
- N=0时表示输入结束,该组无需处理。
- 显然这是个很基础的工具函数,所以要尽量快。据说最后一个测试点有几十MB呢。
#### 输出规格
- 对**每组数据**输出字符总数、可作为十六进制数字的字符数,间隔一个空格,然后换行。
#### 样例输入
in
3
0123456789
ABCDEF
abcdefZ
1
:)
0
#### 样例输出
out
23 22
2 0
#### 样例解释
- 第1组有3行,共23个字符,能作为十六进制数字的有22个。
- 第2组有1行,共2个字符,能作为十六进制数字的有0个。
- 最后的0表示结束。
#### 参考代码
cpp
#include <iostream>
using namespace std;
inline bool is_hex(char c){
return false; // TODO
}
int main(){
ios::sync_with_stdio(false); // 这两行能极大加速C++的输入性能。
cin.tie(nullptr); // 代价是不能混用scanf/printf。
for(int n; cin >> n, cin.get(), n > 0;){
int t = 0, h = 0;
for(string s; n--;){
getline(cin, s);
t += s.size();
for(char c : s){
if(is_hex(c)){
++h;
}
}
}
cout << t << ' ' << h << endl;
}
}
答案:若无答案欢迎评论