试题 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 格式这个题目个人感觉解题有出入,对数据的考虑一定不周全,这个题目改了几遍,还是达不到题目的要求精度。