Chinaunix首页 | 论坛 | 博客
  • 博客访问: 392961
  • 博文数量: 70
  • 博客积分: 1919
  • 博客等级: 上尉
  • 技术积分: 1179
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 20:05
文章分类

全部博文(70)

文章存档

2014年(2)

2013年(29)

2012年(20)

2011年(1)

2010年(13)

2009年(5)

分类: C/C++

2013-09-30 09:15:09

/***
*编程之美: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;   
}
阅读(557) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~