【天梯赛】 零基础刷题(天梯赛备赛热身赛)(Java题解

样例输入


20



样例输出


0



Java题解


对数制转换熟悉就很easy了,除此之外Java自身还有数制转换的方法




import java.util.Scanner;



public class Main{



	public static void main(String[] args) {

		// TODO Auto-generated method stub

		int n,ans=0;

		Scanner scanner=new Scanner(System.in);

		n=scanner.nextInt();

		while(n!=0) {

			if(n%16>=10) {

				ans++;

			}

			n=n/16;

		}

		System.out.println(ans);

		scanner.close();

	}



}










import java.util.Scanner;



public class Main {



	public static void main(String[] args) {

		int n,ans=0;

		Scanner scanner=new Scanner(System.in);

		n=scanner.nextInt();

		String string=Integer.toHexString(n);

		//System.out.println(string);

		for(int i=0;i<string.length();i++) {

			if(!(string.charAt(i)>='0'&&string.charAt(i)<='9')) {

				ans++;

			}

		}

		System.out.println(ans);

		scanner.close();

	}



}





😊问题 D: 平行四边形

================================================================================

题目描述

Kimi想用“_”号构成一个平行四边形并在屏幕上输出。 当输入一个大于等于2的正整数N时,屏幕上将显示一个由N_N个“*”组成的平行四边形。

例如:输入3,输出如下平行四边形。


  ***

 ***

***



输入

输入一个正整数N,1<N<=100。

输出

输出一个N行,每行N个“*”组成的平行四边形。

样例输入


3



样例输出


  ***

 ***

***



Java题解







import java.util.Scanner;



public class Main {



	public static void main(String[] args) {

		int n;

		Scanner scanner=new Scanner(System.in);

		n=scanner.nextInt();

		for(int i=n;i>0;i--) {

			for(int j=i-1;j>0;j--) {

				System.out.print(" ");

			}

			for(int k=0;k<n;k++) {

				System.out.print("*");

			}

			System.out.println();

		}

		scanner.close();



	}



}





😏问题 E: 临时换人

===============================================================================

题目描述

因为某些原因,Jack和Rose没有办法参加毕业演出,他们两个的工作任务都将由劳模Tom来代替。

现在需要更新演职人员名单,将所有的Jack和Rose替换成Tom。 请你编写一段程序实现人员替换功能。

输入

单组输入。 输入一个字符串(可能有空格,字符串长度<=1e5),包含若干Jack和Rose。

输出

输出替换之后的字符串。

样例输入


Cameraman: Jack, Lighting engineer: Rose.



样例输出


Cameraman: Tom, Lighting engineer: Tom.



Java


呵呵,这一题我又知道一个Java自带的方法,两行解决了




import java.util.Scanner;



public class Main {



	public static void main(String[] args) {

		String s;

		Scanner scanner=new Scanner(System.in);

		s=scanner.nextLine();

		s=s.replaceAll("Jack", "Tom");

		s=s.replaceAll("Rose", "Tom");

		System.out.println(s);

		scanner.close();

	}



}





😭问题 F: 第n个数

===============================================================================

题目描述

自从学了素数以后,明明喜欢上了数字2、3和5。当然,如果一个数字里面只出现2、3和5这三个数字,他也一样喜欢,例如222、2355、223355。

现在他希望你能够帮他编写一个程序,快速计算出由2、3、5这三个数字组成的由小到大的第n个数,当然也包括2、3和5。

输入

每组输入数据占1行,每行输入一个正整数n。(n<=1000)

输出

每组输出数据占1行,即满足要求的第n个数。

样例输入


3



样例输出


5



Java题解


这道题死磕了我好久,虽然在网上看到了一些别的解法,但还是坚持捣鼓出了自己的写法,可能有bug和不足

按照题意列出来几个就会发现这道题肯定是存在规律 的,所以我就穷思花了好一会找到了这么一列式子,

个位很好找,当n%3,余1各位上就是2,余2个位上就是3,整除也就是余0个位就是5,所以这也是为什么num[]={5,2,3},而不是num[]={2,3,5}

然后十位上,2,3,5分别会连续3个的出现,如22,23,25;32,33,35;52,53,55;所以考虑要除3再取余,但是这时候我们会验算发现第六位数的十位是2,但是6/3%3=2,也就是会等于num[2]=3,所以我们偏移一位得到(n-1)/3%3

依次类推,我们就发现了规律

在这里插入图片描述

但是怎么判断循环结束呢,从之前的验算中就能发现,如果(n-ans)<Math.pow(3, i)那么(n-ans)/Math.pow(3, i)=0,这时((n-ans)/(int)(Math.pow(3, i))%3)的值会一直是0,不再有意义,所以结束循环的条件就是(n-ans)>=Math.pow(3, i)

可惜的是自己早就思路混乱了,写代码的时候好多细节没注意,导致修改了好久

过几天我可能还会去学习网上的其他解法,再整理一遍单独发出来






import java.util.Scanner;



public class Main{



	public static void main(String[] args) {

		int n,ans=0,leix=1;

		int num[]= {5,2,3};//储存5,2,3

		int solut[]= new int[10];//储存答案

		

		Scanner scanner =new Scanner(System.in);

		n=scanner.nextInt();

		int index=0;//下标从0开始

		

		solut[index]=num[n%3];//获取个位的数字

		index++;

		

		leix=(int) Math.pow(3, 0);

		ans+=leix;

        

		for(int i=1;(n-ans)>=Math.pow(3, i);i++) {

			int sum= ((n-ans)/(int)(Math.pow(3, i))%3);

			

			leix=(int) Math.pow(3, i);

			ans+=leix;

			

			solut[index]=num[sum];

			index++;



# 总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

**目录:**

![](https://img-blog.csdnimg.cn/img_convert/f9ccdfbdfe1158b914255a00234b5e3e.webp?x-oss-process=image/format,png)

**部分内容截图:**

![](https://img-blog.csdnimg.cn/img_convert/fc7282d780d20c0be901bd0c21078a88.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/a20f7a3154f6308c7390be5331873d49.webp?x-oss-process=image/format,png)



t) Math.pow(3, 0);

		ans+=leix;

        

		for(int i=1;(n-ans)>=Math.pow(3, i);i++) {

			int sum= ((n-ans)/(int)(Math.pow(3, i))%3);

			

			leix=(int) Math.pow(3, i);

			ans+=leix;

			

			solut[index]=num[sum];

			index++;



# 总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

**目录:**

[外链图片转存中...(img-dwUjnoLx-1714525001622)]

**部分内容截图:**

[外链图片转存中...(img-gO0uU4R1-1714525001622)]

[外链图片转存中...(img-1sh2tPKB-1714525001622)]



> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值