蓝桥杯备考随手记: practise02

文章讲述了如何使用循环遍历10000以内的数字,通过取模运算和字符串转换判断每个数字立方的末尾是否等于数字本身,以解决整型溢出问题并统计满足条件的正整数数量。
摘要由CSDN通过智能技术生成

问题描述:

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

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

思路分析:

使用循环来遍历10000以内的数字,然后判断每个数字的立方的末尾是否等于数字本身。

两种解决方式:

  1. 使用取模获取末尾数字,然后判断是否等于原整数本身。此末尾并不是指数字立方后的最后一位,而是以数字本身结尾的部分。
  2. 将数字转换为字符串类型,然后使用字符串的endsWith()方法判断立方数的最后一位数字是否等于原数字。

需要注意,对于较大的整数,可能会出现整型溢出的问题,因此需要使用 long 类型或 BigInteger 类型来处理。 

代码实现:

取模运算:

 public class Main {
    public static void main(String[] args) {
        int count = 0;
        for (long i = 1; i <= 10000; i++) {
            long cube = i * i * i;
            long lastDigits = cube % ((long) Math.pow(10, String.valueOf(i).length()));
            if (lastDigits == i) {
                count++;
            }
        }
        System.out.println("在10000以内的数字中,满足条件的正整数个数为:" + count);
    }
}

字符串转换: 

import java.math.BigInteger;
public class Main {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 1; i <= 10000; i++) {
            BigInteger num = BigInteger.valueOf(i);
            BigInteger cube = num.pow(3);
            if (cube.toString().endsWith(num.toString())) {
                count++;
            }
        }
        System.out.println("在10000以内的数字中,满足条件的正整数个数为:" + count);
    }
}
  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值