zoukankan      html  css  js  c++  java
  • 1~n中1的和

    题目:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数;

    要求:写一个函数fn),返回1n之间出现“1“的个数,

    思路:

    1、先判断这个数共多少位,假设为n位;

    2、判断哪一位上数为1

    3、在判断最高位上的数;

    思路:

       将输入的数n分解开看,看每一位数上出现的1的个数,

    1、当n为一位数时:

    n小于1时,和为0

    n大于等于1;和为1

    2、当n为两位数时:例如n19

    个位出现的1的个数为2

    十位出现的1的个数为10

    3、当n为三位数时:例如n119

    个位出现的1的个数为:12

    十位出现的1的个数为:20

    百位出现的1的个数为:20

    代码:

    #include<iostream>

    using namespace std;

    void main ()

    {  

       int  n;  

       int i=1;  

       int count =0;  

       int  c=0,a =0,b =0;  

       cout<<"输入n的值:";  

       cin>>n;  

        while((n / i) !=0)              

    {                            

         c = (n / i) %10;                       

         b= n / (i *10);                        

         a = n - (n / i) * i;     

       cout<<c<<"  "<<b<<"  "<<a<<endl;   

         if (c >1)                     

             count = count + (b +1) * i;  

         else  

             if (c ==0)                    

                   count = count + b * i;

         else  

              if(c ==1)                     

                          count = count + b * i + a +1;

                     i = i *10;             

        }  

      cout<<count<<endl;

    }

    截图:

    总结:

    将输入的数进行分解,即可解决问题

  • 相关阅读:
    actionscript3.0 的一些小技巧
    Flash 安全沙箱的意义
    明明连上了网,但是打不开网页
    关于电脑上可用内存太小的问题
    AS3 Starling 学习杂谈 (一) Quad类
    更新flash builder4,6 的AIR版本
    软件工程实践2017第二次作业
    软件工程实践2017第一次作业
    微信小程序开发指南合集 各类组件用法技巧
    微信小程序视频教程合集 附带源码、PPT下载
  • 原文地址:https://www.cnblogs.com/mingning/p/4551424.html
Copyright © 2011-2022 走看看