OpenJudge:40.数1的个数

博客介绍了如何使用Java解决编程问题,即计算从1到n的整数中数字1出现的次数。通过两种方法实现:暴力法和逐位遍历。暴力法通过遍历每个数字并计数,逐位遍历则是将所有数字拼接再逐位分析。提供的Java代码示例展示了这两种方法。
摘要由CSDN通过智能技术生成

一、题目

OpenJudge:40. 数1的个数
给定一个十进制正整数n,写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。
例如当n=2时,写下1,2。这样只出现了1个“1”;当n=12时,写下1,2,3,4,5,6,7,8,9,10,11,12。这样出现了5个“1”。

示例
输入
正整数n。1 <= n <= 10000。
输出
一个正整数,即“1”的个数。
样例输入
12
样例输出
5

二、暴力法

算法
  • 将 i从 11遍历到 n:
  • 将每个i中1’ 的个数累加到变量 count
  • 返回 count
java代码
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        Main count = new Main();
        System.out.println(count.countDigitOne(n));
    }

    public int countDigitOne(int n) {
        int count = 0;
        int temp = 1;
        for (int i = 1; i <= n; i++) {
            temp = i;
            while (temp != 0) {
                count += (temp % 10 == 1) ? 1 : 0;
                temp = temp / 10;       //数据类型强制转换
            }
        }
        return count;
    }
}

三、逐位遍历

思路:将所有数字拼接起来,然后再逐位遍历
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

folielxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值