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;

    }

    截图:

    总结:

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

  • 相关阅读:
    1.c语言程序设计--c语言概述/vs2015安装使用
    DerpNStink----靶机渗透学习4
    一生清贫怎敢入繁华
    python篇------>建立socket连接
    loadoftheroot靶机--靶机渗透学习
    socks代理总结篇
    cobalt strike内网穿透
    netsh端口转发(windows自带,免杀)
    Cobal Strike-taowu梼杌详细介绍
    变量的解构赋值
  • 原文地址:https://www.cnblogs.com/mingning/p/4551424.html
Copyright © 2011-2022 走看看