试题 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 isGoodNumber(int num) {
    int digit = 1;
    while (num > 0) {
        int current_digit = num % 10;
        if ((digit % 2 == 1 && current_digit % 2 == 0) || (digit % 2 == 0 && current_digit % 2 == 1)) {
            return false;
        }
        num /= 10;
        digit++;
    }
    return true;
}
int main() {
    int N;
    cin >> N;
    int count = 0;
    for (int i = 1; i <= N; i++) {
        if (isGoodNumber(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 <cmath>
using namespace std;
int main() {
    int n;
    double d;
    cin >> n >> d;
    int result = round(d * pow(2, n));
    cout << result << endl;
    return 0;
}


















