博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个整数N中的1的个数
阅读量:5901 次
发布时间:2019-06-19

本文共 806 字,大约阅读时间需要 2 分钟。

设计思想:

通过大量数据分解找规律

abcd 从d开始若d=0则count(1的个数)=左边的abc *d的位值(1、10、100、、) 若等欲1则count=左边的abc*d的位值(1、10、100、、),若为大于1的值则为(左边的abc +1)*d的位值(1、10、100、、) ,依次对c,b,a进行count++。

源代码:

#include<iostream>
using 
namespace std;
void main()
{
    
int N=
124;
     
int weizhi=
1;
//
标记计数1的位数(1为个位,10为十位)
    
int now=
0;
//
当前位数数字
    
int down=
0;
//
较低位数字大小(可为多位)
    
int up=
0;
//
较高位数字大小
    
int count=
0;
    cout<<
"
输入N:
"<<endl;
    cin>>N;
    
while(N/weizhi!=
0)
    {
        
//
获取数字
        now=(N/weizhi)%
10;
        down=N-(N/weizhi*weizhi);
        up=N/(weizhi*
10);
        
if(
0==now)
//
当前数字为0时计数
        {
            count+=up*weizhi;
        }
        
else 
if(
1==now)
//
当前数字为1时计数
        {
            count+=up*weizhi+down+
1;
        }
        
else
        {
            count+=(up+
1)*weizhi;
        }
        weizhi=weizhi*
10;
//
数字左移一位
    }
    cout<<
"
输出1的个数:
";
    cout<<count<<endl;
}

总结:从大量数据中分析有特点的几个数比如0,1,大于1的数含这些数的数,虽然做出来了但换是没弄清具体是什么原理。

转载于:https://www.cnblogs.com/xizhenghe/p/4553322.html

你可能感兴趣的文章
vim添加复制(crtl+c),粘贴(ctrl+v)ctrl+A 等快捷键
查看>>
空间统计的几点想法
查看>>
动态规划晋级——HDU 3555 Bomb【数位DP详解】
查看>>
一起谈.NET技术,用c#实现Protocol Buffers的变长字节整形编码
查看>>
接口的显示实现和隐式实现
查看>>
人防工程防排烟及通风空气调节规范
查看>>
孩子王?有孩子气才能为王?
查看>>
深入浅出的webpack构建工具---DevServer配置项(二)
查看>>
最新版ffmpeg源码分析一:框架
查看>>
Getting Started with iOS Development Part11: Trouble Shooting
查看>>
viewWillAppear: viewDidAppear: viewWillDisappear:viewDidDisappear:loadView
查看>>
win7对telnet的处理和SaveFileDialog的处理方法
查看>>
VB.net 操作 execl
查看>>
Windows环境下QT学习笔记02:QT Creator下新建项目
查看>>
前端集锦:十款精心挑选的在线 CSS3 代码生成工具
查看>>
国外网页设计工具大集合
查看>>
Python 中的range()函数与array()函数
查看>>
asp.net 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
查看>>
c#自定义消息框
查看>>
Java之深入JVM(2) - 由深入JVM(1)想到的一个面试题
查看>>