题目描述
楚王想知道,没有前导零的从1 11到N NN的十进制数中,有多少个数的位数是奇数。
- 1 11有1 11位
- 9 99有1 11位
- 10 1010有2 22位
- 123 123123有3 33位
此时有名毛遂者,自荐以解此题。
输入格式
.
输入包括1 11行1 11个整数N NN
数据范围:
- 1 ≤ N ≤ 1 0 5 1leq Nleq 10^51≤N≤105
输出格式
.
输出1 11行1 11个整数,代表1 11到N NN中,有多少个数的位数是奇数
例如从1 11到136 136136这136 136136个数,1 , 2 , ⋯ 9 1,2,cdots91,2,⋯9有1 11位(9个),100 , 101 , ⋯ , 136 100,101,cdots,136100,101,⋯,136有3 33位(37个),因此共有46 4646个数的位数是奇数。
输入样例 复制
136
输出样例 复制
46
完整代码
非常朴实无华的解法啊!
#include<bits/stdc++.h>
using namespace std;
int main(){
//freopen("/config/workspace/test/test","r",stdin);
int n;
cin>>n;
int a[3]={9,900,90000};
int count=0;
if(n>=1&&n<=9){
count=n;
}else if(n>=10&&n<=99){
count=9;
}else if(n>=100&&n<=999){
count=9+n-99;
}else if(n>=1000&&n<=9999){
count=9+900;
}else if(n>=10000&&n<=99999){
count=9+900+n-9999;
}else if(n==100000){
count=9+900+90000;
}
cout<<count<<endl;
return 0;
}