试题 C: 好数
时间限制
: 1.0s 内存限制: 256.0MB 本题总分:10
分
【问题描述】
一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位
· · ·
)上 的数字是奇数,偶数位(十位、千位、十万位 · · ·
)上的数字是偶数,我们就称 之为“好数”。 给定一个正整数 N
,请计算从
1
到
N
一共有多少个好数。 【输入格式】
一个整数
N
。
【输出格式】
一个整数代表答案。
【样例输入
1
】
24
【样例输出
1
】
7
【样例输入
2
】
2024
【样例输出
2
】
150
【样例说明】
对于第一个样例,
24
以内的好数有
1
、
3
、
5
、
7
、
9
、
21
、
23
,一共
7
个。
【评测用例规模与约定】
对于
10
%
的评测用例,
1
≤
N
≤
100
。
对于
100
%
的评测用例,
1
≤
N
≤
10^
7
。
#include <iostream>
using namespace std;
bool Number(int num) {
int d = 1;
while (num > 0) {
int c_d = num % 10;
if ((d % 2 == 1 && c_d % 2 == 0) || (d % 2 == 0 && c_d % 2 == 1)) {
return false;
}
num /= 10;
d++;
}
return true;
}
int main() {
int n;
cin >> n;
int count = 0;
for (int i = 1; i <= n; i++) {
if (Number(i)) {
count++;
}
}
cout << count << endl;
return 0;
}
试题 D: R 格式
时间限制
: 1.0s 内存限制: 256.0MB 本题总分:10
分
【问题描述】
小蓝最近在研究一种浮点数的表示方法:
R
格式。对于一个大于
0
的浮点
数
d
,可以用
R
格式的整数来表示。给定一个转换参数
n
,将浮点数转换为
R
格式整数的做法是: 1. 将浮点数乘以
2
n
; 2. 四舍五入到最接近的整数。
【输入格式】
一行输入一个整数
n
和一个浮点数
d
,分别表示转换参数,和待转换的浮点数。
【输出格式】
【输出格式】
输出一行表示答案:d 用 R
格式表示出来的值。
【样例输入】
2 3.14
【样例输出】
13
【样例说明】
3
.
14
×
2
2
= 12
.
56
,四舍五入后为
13
。
【评测用例规模与约定】
对于
50
%
的评测用例:
1
≤
n
≤
10
,
1
≤
将
d
视为字符串时的长度
≤
15
。
对于
100
%
的评测用例:
1
≤
n
≤
1000
,
1
≤
将
d
视为字符串时的长度 ≤ 1024
;保证
d
是小数,即包含小数点。
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
string num(const string& d, int n);
int main() {
int n;
string d;
cin >> n >> d;
string result = num(d, n);
cout << result << endl;
return 0;
}
string num(const string& d, int n) {
double a = stod(d);
a *= pow(2, n);
long long b = llround(a);
ostringstream ss;
ss << b;
return ss.str();
}
申明一下:这个为我个人解法,不是 正确答案,试题 D: R 格式这个题目个人感觉解题有出入,对数据的考虑一定不周全,这个题目改了几遍,还是达不到题目的要求精度。