java a 100 b 200_Java 欧拉工程 第二十九篇【a的b次方(2≤a,b≤100)中共有多少个不同的数】...

题目:

考虑

a

b

在 2

symbol_le.gif

a

symbol_le.gif

5,2

symbol_le.gif

b

symbol_le.gif

5下的所有整数组合:

2

2=4, 2

3=8, 2

4=16, 2

5=32

3

2=9, 3

3=27, 3

4=81, 3

5=243

4

2=16, 4

3=64, 4

4=256, 4

5=1024

5

2=25, 5

3=125, 5

4=625, 5

5=3125

如果将这些数字排序,并去除重复的,我们得到如下15个数字的序列:

4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125

ab 在 2

symbol_le.gif a 

symbol_le.gif 100,2 

symbol_le.gif b 

symbol_le.gif 100 下生成的序列中有多少个不同的项?

原题:

Consider all integer combinations of ab for 2 ≤ a ≤ 5 and 2 ≤ b ≤ 5:

2

2=4, 2

3=8, 2

4=16, 2

5=32

3

2=9, 3

3=27, 3

4=81, 3

5=243

4

2=16, 4

3=64, 4

4=256, 4

5=1024

5

2=25, 5

3=125, 5

4=625, 5

5=3125

If they are then placed in numerical order, with any repeats removed, we get the following sequence of 15 distinct terms:

4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125

How many distinct terms are in the sequence generated by ab for 2 ≤ a ≤ 100 and 2 ≤ b ≤ 100?

解题思路:

由于存在100^100次方,所以一开始考虑用大树求和的办法,后来发现这样做运行的时候耗时太长,想了又想觉得还是用暴力求解,遍历的办法,用hashset去重,定义hashset时不要定义整数型就可以存放超大数,虽然这样写代码不爱好,但确实是这道题最简单最快的解决办法了,如下是代码:

public class Launcher {

public static void main(String[] args) {

HashSet sumList=new HashSet();

int n=0;

for(int i=2;i<=100;i++){

for(int j=2;j<=100;j++){

n++;

sumList.add(Math.pow(i, j));

}

}

System.out.println(sumList.size());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值