立方尾不变:(BigInteger、multiply、toString()、endsWith()、String.valueOf())

有些数字的立方的末尾正好是该数字本身。比如:1,4,5,6,9,24,25,…请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。请提交该整数,不要填写任何多余的内容。

注意:

10000的数字立方会很大,所以需要用到 BigInteger .这里因为数值比较大,所以要用BigInteger的 multipy 进行平方,也因为multipy的操作对象是BigInteger,所以需要用 String.valueOf 将i转化为String,然后再通过new BigInteger的方式转化为BigInteger

错误:27

public class Test02 {
    public static void main(String[] args) {
        int t = 0;
        for (int i = 1; i <= 10000; i++) {
            String s1 = String.valueOf(i);
            String s2 = String.valueOf(i * i * i);
            if (s2.endsWith(s1)) {
                t = t + 1;
            }
        }
        System.out.print(t);
    }
}

正确:36

import java.math.BigInteger;

public class Test02 {
    public static void main(String[] args) {
        int t = 0;
        for (int i = 1; i <= 10000; i++) {
        	BigInteger threeNum=new BigInteger(String.valueOf(i));
        	threeNum=threeNum.multiply(threeNum).multiply(threeNum);
        	if(threeNum.toString().endsWith(i+"")){
        	     t+=1;
        	}
        }
        System.out.print(t);
    }
}

你可能感兴趣的:(蓝桥杯Java程序设计,java,算法,数据结构)