博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于有多少个1的计算
阅读量:6252 次
发布时间:2019-06-22

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

1、题目

输入一个十进制的数,输出

    (1)、给定n,求出从1到n的所有整数中1的个数。(暂用用f(n)表示)

    (2)、求满足n=f(n)的最小整数(1除外)。

#include <iostream> 

#include <math.h> 
using namespace std; 
 
void solve(); 
int input(); 
int power(int count); 
void main(){ 
    solve(); 
    system("pause"); 
 
void solve(){ 
    int n,count=0,i,sum=0; 
    n=input(); 
    //count为一个计数的,来计算n是几位数,如1则为个位数,2则为百位数 
    i=n; 
    while(i){ 
        i=i/10; 
        count++; 
    } 
    while(count--){ 
        i=(n/power(count))%10;//提取了与count对应的位 
        cout<<i<<endl; 
        if(i==1){ 
            if(0==count)//如果对应个位 
                sum+=1; 
            else 
                sum+=n%power(count)+1; 
        } 
        else if(i>1){ 
            sum+=power(count); 
        } 
        sum+=n/power(count+1)*power(count); 
    } 
    cout<<"一个有"<<sum<<"个1"<<endl; 
 
int input(){ 
    cout<<"请输入您想要输入的数字:"<<endl; 
    int n; 
 cin>>n;
 return  n;
}
 
int power(int count){ 
    int m=1; 
    if(count<0){ 
        cout<<"count值有误!"<<endl; 
        return -1; 
    } 
    else 
        while(count--) 
            m*=10; 
    return m; 
}

 

把每个位置上的数都分离出来,先确定是几位数,然后在利用每个位置上的数求得出现多少个1 。

总结:要学会变换思路,以前的时候通过列举找规律,遇到这个问题的时候例句明显太麻烦了,而且很难找到规律,可以找一个数来拆解。

转载于:https://www.cnblogs.com/jump/p/4548435.html

你可能感兴趣的文章
Java变量类型
查看>>
[leetcode-89-Gray Code]
查看>>
mysql 存储过程的基本语法知识
查看>>
数据分析师到底在做什么?
查看>>
pt-heartbeat工具监控MySQL复制延迟
查看>>
指尖下的js —— 多触式web前端开发之三:处理复杂手势(转)
查看>>
spring boot项目配置文件集合
查看>>
cube-ui的用法
查看>>
2015.4.21 SetWindowPos函数用法
查看>>
2011-12-14 调用cmd并获得输入输出+网络访问
查看>>
解决nim db_mysql could not load: libmysql.dll的问题
查看>>
JavaScript之再谈回调与闭包
查看>>
优化PHP代码的一些建议
查看>>
android学习网站
查看>>
TCP定时器详解
查看>>
if判断,switch语句
查看>>
postgresql中字段为空的查询
查看>>
Arduino入门之前
查看>>
JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)
查看>>
zoj 1904 Beavergnaw 计算圆柱和圆台的体积
查看>>