2015年Java方向C组第二题

2021-02-09  本文已影响0人  D丝学编程

第二题

标题:立方尾不变

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

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

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

解析:该试题的数据会出现10000的立方,10000的立方在64位机器上可以表示,但是在32位机器上会超出long类型的数据范围,需要借助BigInteger来实现程序功能。

方案一:

在64位机器上代码如下:

int count = 0; //答案
for (long i = 1; i < 10000; i++) 
{
    long powNum = i*i*i;
    String strNum = i+"";
    String strPowNum = powNum+"";
    String strLast = strPowNum.substring(strPowNum.length()-strNum.length());
    if(strNum.equals(strLast))
    count++;
}

方案二:

在32位机器上代码如下:

BigInteger start = new BigInteger("1");
BigInteger end = new BigInteger("10000");
BigInteger step = new BigInteger("1");
//compareTo:小于返回-1;等于返回0;大于返回1
int count = 0; //答案
for (BigInteger num = start; num.compareTo(end) == -1; num=num.add(step)) 
{
    BigInteger powNum = num.pow(3);
    String strNum = num.toString();
    String strPowNum = powNum.toString();
    String strLast = strPowNum.substring(strPowNum.length()-strNum.length());
    if(strNum.equals(strLast))
        count++;
}
System.out.println(count);
上一篇下一篇

猜你喜欢

热点阅读