首页 > 其他分享 >【每日一练 基础题】[蓝桥杯 2014 国 C] 拼接平方数

【每日一练 基础题】[蓝桥杯 2014 国 C] 拼接平方数

时间:2024-12-21 20:29:23浏览次数:7  
标签:substring String int System 蓝桥 拼接 Integer parseInt 2014

[蓝桥杯 2014 国 C] 拼接平方数

拼接平方数
小明发现 49 很有趣,首先,它是个平方数。它可以拆分为 4 和 9,拆分出来的部分也是平方数。169 也有这个性质,我们权且称它们为:拼接平方数。
100 可拆分 1,00,这有点勉强,我们规定,0,00,000 等都不算平方数。
小明想:还有哪些数字是这样的呢?
你的任务出现了:找到某个区间的所有拼接平方数。

输入格式
两个正整数 a,b(a<b<10 6)。

输出格式
若干行,每行一个正整数。表示所有的区间 [a,b] 中的拼接平方数,从小到大输出。

思路:把数字转换成字符串,然后在不同地方(循环)分割成两个子串,再把子串转化为数字,判断这两个数是否是平方数。不是一个数一个数地循环,而是一个平方数一个平方数地循环。
这道题不难,但要注意一些小技巧,比如:

  • 判断一个数平方后是否是整数,可以Math.sqrt(n)%1==0,或者Math.round(n)==n (四舍五入后与原来相等)
  • 数字转化为字符串,String str=String.valueOf(a)
  • 字符串转化为数字,int a=parseInt(str);
  • 向上取整,Math.floor(double a)
  • 必要的时候可以强制类型转换,int t=(int)Math.floor(s);
    import static java.lang.Integer.parseInt; 是 Java 语言中的一种导入语句,允许你在类中直接使用 parseInt 方法,而无需每次都写出完整的路径。这种静态导入主要用于提高代码的可读性和简洁性
import java.util.Scanner;
import static java.lang.Integer.parseInt;

public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int s=scanner.nextInt();
        int e=scanner.nextInt();
        int t=(int)Math.floor(Math.sqrt(s));
        while(t*t<e){
            int a=t*t;
            String str=String.valueOf(a);
            for(int i=1;i<str.length();i++){
                String str1=str.substring(0,i);
                String str2=str.substring(i);
                int a1=parseInt(str1);
                int a2=parseInt(str2);
                if((Math.sqrt(a1)%1==0)&&(Math.sqrt(a2)%1==0)&&a2!=0){
                    System.out.println(str);
                    break;
                }
            }
            t++;
        }
    }
}

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int a = scanner.nextInt();
		int b = scanner.nextInt();
		for(int i = a;i <= b;i++) {
			if(check(i)) {
				System.out.println(i);
			}
		}
	}
	//判断平方数
	public static boolean is_sqrt(int n) {
		int t = (int)Math.sqrt(n);
		if(t * t == n) {
			return true;
		}
		return false;
	}
	
	//判断拼接平方数
	public static boolean check(int n) {
		String s = String.valueOf(n);
		for(int i = 1;i < s.length();i++) {
			if(is_sqrt(n) && is_sqrt(Integer.parseInt(s.substring(0,i)))  &&         
                    is_sqrt(Integer.parseInt(s.substring(i))) &&
					Integer.parseInt(s.substring(0,i)) != 0 &&
					Integer.parseInt(s.substring(i)) != 0) {
				return true;
			}
		}
		return false;
	}
}

parseInt

在Java中,parseInt()方法是Integer类的一个方法,用于将字符串参数解析为有符号的十进制整数。这个方法非常有用,当你需要从字符串中提取整数值时。例如,如果你有一个数字字符串,你想将其转换为整数以进行数学运算。

int number = Integer.parseInt("123");
System.out.println(number); // 输出 123

parseInt()方法有两种形式:一种只接受字符串参数,另一种接受字符串和基数两个参数。当使用第二个参数时,你可以指定字符串应该按照哪个进制来解析

int decimal = Integer.parseInt("15"); // 默认十进制
int binary = Integer.parseInt("1010", 2); // 二进制
int octal = Integer.parseInt("17", 8); // 八进制
int hex = Integer.parseInt("F", 16); // 十六进制

System.out.println(decimal); // 输出 15
System.out.println(binary); // 输出 10
System.out.println(octal); // 输出 15
System.out.println(hex); // 输出 15

如果字符串不是有效的数字或者超出整数范围,parseInt()方法会抛出NumberFormatException异常。因此,在使用这个方法时,最好使用try-catch块来处理可能出现的异常

try {
	int number = Integer.parseInt("abc");
} catch (NumberFormatException e) {
	System.out.println("字符串不是有效的数字");
}

Java中的substring方法

在Java中,substring方法用于从字符串中提取子字符串。这个方法有两个变体,允许你指定开始索引(包括)和可选的结束索引(不包括)。

substring方法的使用
当你只提供一个参数,即开始索引时,substring方法将返回从该索引开始到字符串末尾的子字符串。例如:

String Str = new String("This is text");
System.out.println(Str.substring(4)); // 输出 "is text"

如果你提供两个参数,开始索引和结束索引,substring方法将返回从开始索引到结束索引之间的子字符串,但不包括结束索引指定的字符。例如:

String Str = new String("This is text");
System.out.println(Str.substring(4, 10)); // 输出 "is te"

例如,如果你需要从一个包含货币符号和金额的字符串中提取金额部分,你可以使用substring方法来实现这一点。以下是一个简单的示例:

String Str = new String("Rs 1000");
System.out.println(Str.substring(3)); // 输出 "1000"

标签:substring,String,int,System,蓝桥,拼接,Integer,parseInt,2014
From: https://blog.csdn.net/2402_85428625/article/details/144515784

相关文章

  • [CERC2014] Parades 题解
    感觉长脑子了。考虑在路线两端点的\(lca\)计算贡献,那么线段可以分两类:\(u\)为\(v\)祖先。\(u,v\)互不为祖先。设\(dp_i\)表示只考虑\(i\)子树内的路线时的答案。引理\(1\):若插入一条以\(i\)为\(lca\)的路径会使以\(i\)的儿子为\(lca\)的路径数量减少,......
  • 每日一题:好数【蓝桥杯 2024 省 B】
    目录一、题目二、更多示例三、解题思路一、题目二、更多示例1、输入4048   输出275.2、输入5821   输出400.3、输入10000000   输出94400.三、解题思路1、构成好数的条件:一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是......
  • 写一个方法将对象转成用&拼接的请求参数
    在前端开发中,我们经常需要将一个对象转换成URL查询字符串,其中键和值使用等号(=)连接,而不同的键值对之间使用和号(&)连接。以下是一个JavaScript函数,用于实现这一转换:functionobjectToQueryString(obj){returnObject.keys(obj).map(key=>{constvalue=obj[ke......
  • P3316 [SDOI2014] 里面还是外面 题解
    实现有些傻瓜,喜提时空双最劣解。首先要判断一个点是否在多边形内,一个比较好的方法是从这个点向上引一条射线,若和奇数条边相交就在多边形内,否则在多边形外。二维信息,考虑用树套树维护。把多边形的每一条边都扔到它\(x\)坐标范围的线段树节点里,即线段树节点\((l,r)\)里面维护......
  • 基于Halcon的图像拼接技术
    图像拼接一般分为硬拼接与软件拼接,硬拼接相对简单,将多幅图像按照指定的方式直接组合在一起,形成一个大的图像。在Halcon中,可以使用tile_images或tile_images_offset等算子来实现硬拼接。这里先将硬拼接讲解。常规步骤:1、读取图像:使用read_image算子读取需要拼接的图像。......
  • 【蓝桥杯】43688-《Excel地址问题》
    Excel地址问题题目描述Excel单元格的地址表示很有趣,它可以使用字母来表示列号。比如,A表示第1列,B表示第2列,…Z表示第26列,AA表示第27列,AB表示第28列,…BA表示第53列,⋯⋯当然Excel的最大列号是有限度的,所以转换起来并不难。如果我们想把这种......
  • [蓝桥杯 2021 省 AB2] 国际象棋
    题目Description众所周知,“八皇后”问题是求解在国际象棋棋盘上摆放 8 个皇后,使得两两之间互不攻击的方案数。已经学习了很多算法的小蓝觉得“八皇后”问题太简单了,意犹末尽。作为一个国际象棋迷,他想研究在 N×M 的棋盘上,摆放 K 个马,使得两两之间互不攻击有多少种摆......
  • 蓝桥杯训练题(3)
    题目描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表......
  • [蓝桥杯 2020 国 C] 补给
    题目Description小蓝是一个直升飞机驾驶员,他负责给山区的 nn 个村庄运送物资。每个月,他都要到每个村庄至少一次,可以多于一次,将村庄需要的物资运送过去。每个村庄都正好有一个直升机场,每两个村庄之间的路程都正好是村庄之间的直线距离。由于直升机的油箱大小有限,小蓝单次......
  • [蓝桥杯 2019 省 A] 糖果
    题目Description糖果店的老板一共有 MM 种口味的糖果出售。为了方便描述,我们将 MM 种口味编号 11 ∼ MM。小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果,而是 KK 颗一包整包出售。幸好糖果包装上注明了其中 KK 颗糖果的口味,所以小明可以在买之前......