/***
*编程之美:1的个数
*给定一个十进制正整数,写下从1开始,到N的所有正整数,然后数一下其中出现所有给定“1” 的个数
***/
#include
using namespace std;
int main(){
int ibit=1;
long N;
long icount=0;
int ihighnumber=0;
int icurrnumber=0;
int ilowernumber=0;
cout<<"请输入N:";
while(cin>>N){
icount=0;
ibit=1;
ihighnumber=0;
icurrnumber=0;
ilowernumber=0;
while(N/ibit>0){
ihighnumber=N/(ibit*10);
icurrnumber=(N/ibit)%10;
ilowernumber=N%ibit;
switch(icurrnumber){
case 0:{
icount+=ihighnumber*ibit;
break;
}
case 1:{
icount+=ihighnumber*ibit+ilowernumber+1;
break;
}
default:{
icount+=(ihighnumber+1)*ibit;
break;
}
}
ibit*=10;
}
cout<
}
return 0;
}
阅读(571) | 评论(0) | 转发(0) |