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