【蓝桥杯】立方尾不变(两种方法)【java语言】

举报
西红柿炒鸡蛋儿 发表于 2022/03/30 12:26:34 2022/03/30
【摘要】 有些数字的立方的末尾正好是该数字本身。比如:1,4,5,6,9,24,25,....请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。请提交该整数,不要填写任何多余的内容方法一: 截取字符串方式public class 立方尾不变 { public static void main(String[] args) { // TODO ...

有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,....

请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),
符合这个特征的正整数一共有多少个。

请提交该整数,不要填写任何多余的内容

方法一: 截取字符串方式

public class 立方尾不变 {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	   int count = 0;
		
		//注意这里使用long类型,int类型立方值超出范围
		for(long i = 1; i < 10000; i++) {
			//获取初始值的长度
			int  length1 = String.valueOf(i).length();
			//获取立方值的长度
			int length2 = String.valueOf(i*i*i).length();
			
			//截取字符串
			String str = String.valueOf(i*i*i).substring(length2-length1);
			
			//将字符串转为Integer类型和i进行比较
			if(Integer.valueOf(str) == i) {
				count++;
			}
			
			
		}
		
		System.out.println(count);
	}
 
}

方法二:分段处理方式

因为是1000以内的数字,我们可以把它分为10、100、1000、10000

public class 立方尾不变 {
 
	public static void main(String[] args) {
		
         int count = 0;
          
         for(long i = 1; i < 10000; i++) {
        	 if(i < 10) {
        		 if(Math.pow(i, 3) % 10 == i) {
        			 count++;
        		 }
        	 }else if(i < 100){
        		 if(Math.pow(i, 3) % 100 == i) {
        			 count++;
        		 }
        	 }else if(i < 1000) {
        		 if(Math.pow(i, 3) % 1000 == i) {
        			 count++;
        		 }
        	 }else if(i < 10000) {
        		 if(Math.pow(i, 3) % 10000 == i) {
        			 count++;
        		 }
        	 }
        	 
        	 
         }
         
         System.out.println(count);
	}
 
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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