首页 > 编程语言 >P8680 [蓝桥杯 2019 省 B] 特别数的和 java

P8680 [蓝桥杯 2019 省 B] 特别数的和 java

时间:2024-11-12 20:45:45浏览次数:3  
标签:10 P8680 java Scanner temp int 蓝桥 100 public

题目描述

小明对数位中含有 22、00、11、99 的数字很感兴趣(不包括前导 00),在 11 到 4040 中这样的数包括 11、22、99、1010 至 3232、3939 和 4040,共 2828 个,他们的和是 574574。

请问,在 11 到 nn 中,所有这样的数的和是多少?

输入格式

输入一行包含一个整数 nn。

输出格式

输出一行,包含一个整数,表示满足条件的数的和。

输入输出样例

输入 #1复制

40

输出 #1复制

574

说明/提示

对于 20%20% 的评测用例,1≤n≤101≤n≤10。

对于 50%50% 的评测用例,1≤n≤1001≤n≤100。

对于 80%80% 的评测用例,1≤n≤10001≤n≤1000。

对于所有评测用例,1≤n≤100001≤n≤10000。

蓝桥杯 2019 省赛 B 组 F 题。

代码实现

自己糊涂代码

import java.util.Scanner;

public class Main {
    public static void main(String[] arg) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int num = 0;
        for (int i = 1; i <= x; i++) {
            if (x<=10) {
                if (i % 10 == 1 ||i % 10 == 2 ||i % 10 == 9 ||i%10==0) {
                    num += i;
                }
            } else if (x<=100) {
                if ((i<=10&&(i%10==0||i % 10 == 1 ||i % 10 == 2 ||i % 10 == 9 ))||((i/10%10==0||i/10%10==1||i/10%10==2||i/10%10==9||i%10==0||i % 10 == 1 ||i % 10 == 2 ||i % 10 == 9 )&&i>10)) {
                    num += i;
                }
            } else if (x<=1000) {
                if (((i<=10&&(i%10==0||i % 10 == 1 ||i % 10 == 2 ||i % 10 == 9 ))||((i/10%10==0||i/10%10==1||i/10%10==2||i/10%10==9||i%10==0||i % 10 == 1 ||i % 10 == 2 ||i % 10 == 9 )&&i>10))||((i % 10 == 1 || i / 10 % 10 == 1 || i / 100 % 10 == 1 ||i%10==0|| i / 10 % 10 == 0 || i / 100 % 10 == 0 || i % 10 == 2 || i / 10 % 10 == 2 || i / 100 % 10 == 2 || i % 10 == 9 || i / 10 % 10 == 9 || i / 100 % 10 == 9 )&&i>100)) {
                    num += i;
                }
            } else if(x<=10000){
                if (i%10==0||i % 10 == 1 || i / 10 % 10 == 1 || i / 100 % 10 == 1 || i / 1000 % 10 == 1  || i / 10 % 10 == 0 || i / 100 % 10 == 0 || i / 1000 % 10 == 0 || i % 10 == 2 || i / 10 % 10 == 2 || i / 100 % 10 == 2 || i / 1000 % 10 == 2 || i % 10 == 9 || i / 10 % 10 == 9 || i / 100 % 10 == 9 || i / 1000 % 10 == 9) {
                    num += i;
                }
            }

        }
        System.out.println(num);
    }
}

不糊涂代码

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        long sum = 0;
        for (int i = 1; i <= n; i++) {
            int tempI = i;
            while (tempI != 0) {
                int temp = tempI % 10;
                if (temp == 1 || temp == 2 || temp == 9 || temp == 0) {
                    sum += i;
                    break;
                }
                tempI /= 10;
            }
        }
        System.out.println(sum);
    }
}

原因分析

错误分析:判断各十百千位时不能同时判断,举例:i=10时,i/1000%==0。所以必须依次判断,不能一起判断。

 核心:依次判断

 while (tempI != 0) {
                int temp = tempI % 10;
                if (temp == 1 || temp == 2 || temp == 9 || temp == 0) {
                    sum += i;
                    break;
                }
                tempI /= 10;
            }

标签:10,P8680,java,Scanner,temp,int,蓝桥,100,public
From: https://blog.csdn.net/2302_81099651/article/details/143723855

相关文章

  • Java代码实现行列转换
    本代码想要达到的效果 测试完整代码如下(copy直接运行):publicclassTestConvert{publicstaticvoidmain(String[]args){ArrayList<Attribute>sourceList=newArrayList<>();for(inti=0;i<3;i++){for(intj=0;j<3;j+......
  • Java常用方法:StringUtils.isNotBlank()、StringUtils.isEmpty()、去除空格的函数、手
    Java常用方法:StringUtils.isNotBlank()、StringUtils.isEmpty()、去除空格的函数、手机号中间4位换成*、判断字符是否为数字要使用工具类StringUtils,首先得导入依赖<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><ve......
  • 【转】[Java][Idea] 打开时报错 Internal error. Address already in use: bind
    方法一:netshwinsockreset以管理员身份运行cmd执行这个命令,然后重启电脑。 方法二:按报错提示,访问  https://jb.gg/ide/critical-startup-errors  按文章,可以参考 https://youtrack.jetbrains.com/issue/IDEA-238995解决问题 以下是文章摘抄:ReviseIDEdire......
  • 【Java Web】EL表达式
    文章目录EL表达式EL功能获取对象属性获取集合元素数据处理运算屏蔽常见异常自动类型转换EL访问作用域举例一个简单的用户信息展示场景,包含用户的姓名和年龄。下面分别用JSP脚本和EL表达式两种方式实现这个功能。使用JSP脚本<%@pagecontentType="text/h......
  • 【Java】Java读写Excel文件
    常见的JavaExcel操作方法Java中常用的Excel操作方式有什么呢?ApachePOIEasyExcel这两种方法有什么区别和联系?ApachePOI是一个用于操作MicrosoftOffice格式文件(如Excel、Word等)的Java库。它提供了一系列的API来读写Excel文件。POI的基本功能如下:结构说......
  • 【MonitorUtil】java报错日志工具类
     自定义报警日志打印工具importorg.apache.commons.lang.StringUtils;importjava.io.PrintWriter;importjava.io.StringWriter;/***自定义报警日志打印工具**@authorAngel挤一挤*@date2022/12/13*/publicclassMonitorUtil{/***......
  • 《Java核心技术 卷I》图形用户界面使用字体
    使用字体字体名(fontfacename)指定一种字体,字体名由字体族名(fontfamilyname)和一个可选的后缀(如果"Bold")组成,例如,“Helvetica”和"HelveticaBold"都属于名为“Helvetica”字体族的字体。要想知道某台特定计算机上可用的字体,可以调用GraphicsEnvironment类的getAvaila......
  • 深入 Java 多线程:解锁并发编程的奥秘
    在当今的软件开发世界中,性能和高并发是衡量一个应用程序成败的关键因素。无论是处理高流量的网络请求、执行复杂的数据分析任务,还是管理后台服务中的资源,Java多线程编程都是开发者必备的技能之一。本文将带领你深入Java多线程的世界,解锁并发编程的奥秘。1.并发与并行的区......
  • 2024年Java 八股文-基础篇
    1.为什么说Java语言“编译与解释并存”?高级编程语言按照程序的执行方式分为编译型和解释型两种。简单来说,编译型语言是指编译器针对特定的操作系统将源代码一次性翻译成可被该平台执行的机器码;解释型语言是指解释器对源程序逐行解释成特定平台的机器码并立即执行。比如,你......
  • Java中2个Integer比较相同的4种方式
    Java中2个Integer比较相同的4种方式概要使用前切记Integer的范围是【-128~127】例如:Integera=128;Integerb=128;1,使用==比较【-128~127】区间内返回true,否则返回false//==比较if(a==b){System.out.println("a,b使用==比较返回结果:true");......