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;

    }

    截图:

    总结:

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

  • 相关阅读:
    ArcEngine连接表join
    坐标系统与投影变换及在ARCGIS中的应用
    ArcEngine 最短路径分析(源码)【转载】
    TOC图例符号转换到ListView
    Dijkstra 最短路径算法的一种高效率实现
    添加、删除连接(Join)和关联(Relate)VBA实例
    C# 实现在线软件自动升级程序
    MapX八个技巧
    希腊字母的读法
    经纬度点与投影坐标系下坐标点的互相转换
  • 原文地址:https://www.cnblogs.com/mingning/p/4551424.html
Copyright © 2011-2022 走看看