【java_蓝桥杯算法训练】简单加法(基本型)

举报
昵称: 发表于 2022/02/24 22:16:32 2022/02/24
1.1k+ 0 0
【摘要】 简单加法(基本型)资源限制时间限制:1.0s   内存限制:512.0MB问题描述  首先给出简单加法算式的定义:  如果有一个算式(i)+(i+1)+(i+2),(i>=0),在计算的过程中,没有任何一个数位出现了进位,则称其为简单的加法算式。  例如:i=3时,3+4+5=12,有一个进位,因此3+4+5不是一个简单的加法算式;又如i=112时,112+113+114=339,没有在任意...

简单加法(基本型)

资源限制

时间限制:1.0s   内存限制:512.0MB

问题描述

  首先给出简单加法算式的定义:
  如果有一个算式(i)+(i+1)+(i+2),(i>=0),在计算的过程中,没有任何一个数位出现了进位,则称其为简单的加法算式。
  例如:i=3时,3+4+5=12,有一个进位,因此3+4+5不是一个简单的加法算式;又如i=112时,112+113+114=339,没有在任意数位上产生进位,故112+113+114是一个简单的加法算式。

  问题:给定一个正整数n,问当i大于等于0且小于n时,有多少个算式(i)+(i+1)+(i+2)是简单加法算式。其中n<10000。

输入格式

  一个整数,表示n

输出格式

  一个整数,表示简单加法算式的个数

样例输入

4

样例输出

3

分析:

本题的题目是求从i=0到i<n,计算i+(i+1)+(i+2),判断加起来有没有进位,我们可以这样来判断是否有进位首先i+(i+1)+(i+2)它们的长度必须是一样的,然后它们进行数学上的累加起来是不是超过了他们其中任意一个的长度,因为已经判断了他们的长度都是相同的,如果他们的进行数学上的累加后超过了他们其中任意一个的长度,就发生了错位,否则没有发生错位。编写程序,定义一个n用来存放循环的终止值,定义int型sum用来存放最后的累加值。写一个for循环进行遍历设置i值为0,i<n-1假如n等于4第一次i等于0对0 1 2 进行累加,i等于1 对 1 2 3 进行累加,i等于2 对2 3 4 进行累加,第三次i等与3,i<n-1也就是i<4-1=3,3<3不成立,所以为i<n-1,避免i+(i+1)+(i+2)超出n的值发生越界的错误,最后导致累加值错误的连锁反应,所以一定要设置好i的循环范围。然后我们看下代码:


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
//		用来存放n的值
		int n=sc.nextInt();
//		用sum来进行累加的值
		int sum=0;
		for(int i=0;i<n-1;i++) {
			//判断i+(i+1)+(i+2)它们三个的值的长度相同
			if((i+"").length()==(i+1+"").length()&&(i+1+"").length()==(i+2+"").length()) {
//				数学累加后判断判断和以前的长度是否相同
//				同的累加
				if((i+(i+1)+(i+2)+"").length()==(i+"").length()) {
					sum++;
				}
			}
		}
		System.out.println(sum);
	}

}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。