0好数 - 蓝桥云课
问题描述
一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位…)上的数字是奇数,偶数位(十位、千位、十万位…)上的数字是偶数,我们就称之为“好数”。
给定一个正整数 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≤1e7。
思路:
题目很简单,我们只需要知道用一个变量替代下标分析即可。
代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
typedef long long ll;
ll n;
bool check(ll x)
{ll cnt = 1;while(x){ll dig = x % 10;if(cnt % 2 == 0)//偶数位置 {if(dig % 2 != 0)//但是是奇数{return false; } }else if(cnt % 2 != 0)//奇数位置{if(dig % 2 == 0)//但是是偶数{return false; } }cnt++;x = x / 10;}return true;
}
int main()
{ ll ans = 0;cin >> n;for(ll i = 1 ; i <= n ; i++){if(check(i)){
// cout << i << " ";ans++;}}
// cout << endl;cout << ans;return 0;
}