文章目录
1.百万富翁问题
1.1题目详述
题目链接:百万富翁问题
1.2解题思路
穷人:2^0 + 2^1 + 2^2 + …… + 2^29 = 2^30 - 1,可以直接System.out.println(10*30 + " " + (long)(Math.pow(2,30)-1));
。
等比数列求和: Sn=a1(1-q^n)/(1-q) (q为公比,n为项数)
1.3程序测试
import java.lang.Math;
public class Main{
public static void main(String[] args){
long sumRich=0;
long sumStranger=0;
for(int i=1;i<=30;i++){
sumRich+=10;
sumStranger=sumStranger+(long)Math.pow(2,i-1);
}
System.out.println(sumRich+" "+sumStranger);
}
}
时间复杂度O(1):
import java.lang.Math;
public class Main{
public static void main(String[] args){
long sumRich = 30 * 10;
long sumStranger = (1L << 30) - 1;
System.out.print(sumRich + " " + sumStranger);
}
}
运行结果:
2.球的半径和体积
2.1题目详述
题目链接:球的半径和体积
2.2解题思路
1.三维坐标系,求两点距离。
注意:开平方根 Math.sqrt(参数);
设A(x1,y1,z1),B(x2,y2,z2)
|AB|=√[(x2-x1)^2 + (y2-y1)^ 2 + (z2-z1)^2]
2.球体积计算。
注意:п = Math.acos(-1);
,Math.pow(a,b); // 表示a^b
球的体积v=(4/3)пR^3
球的表面积S=4пR^2
2.3程序测试
import java.lang.Math;
import java.util.Scanner;
public class Main2 {
public static void main(String[] args){
Scanner in=