题目:
乌鸦喝水问题,
本质是等比数列求和问题
等比数列求和,要求输出为分数,且互质
*
* 前几项为:1,1/2,1/4,1/8
*
* 比如 输入:2
* 输出:3/2
* 等比数列的求和公式为s=a1*((1-q的n次方)/(1-q))
* 整理后该题的求和公式为s=(2的n次方-1)/(2的n-1次方)
代码:
package test;
import java.util.*;
/**
* 等比数列求和,要求输出为分数,且互质
*
* 前几项为:1,1/2,1/4,1/8
*
* 比如 输入:2
* 输出:3/2
* 等比数列的求和公式为s=a1*((1-q的n次方)/(1-q))
* 整理后该题的求和公式为s=(2的n次方-1)/(2的n-1次方)
* @author psy
*
*/
public class fenshu01 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int fenzi=1,fenmu=1;
for(int i=0;i<n;i++){
fenzi=fenzi*2;
}
fenzi=fenzi-1;
for(int i=0;i<n-1;i++){
fenmu=fenmu*2;
}
//输出方法
int gys=1;//公约数,初始化为1
// 找出最大公约数
for(int i=1;i<=fenmu;i++) {
if(fenzi%i==0&&fenmu%i==0) {
gys=i;
}
else {
continue;
}
}
// 化为最简分数
fenzi=fenzi/gys;
fenmu=fenmu/gys;
if(fenzi==1&&fenmu==1) {
System.out.println(1);//分子分母同为1输出1
}
else {
System.out.println(fenzi+"/"+fenmu);//否则,直接输出
}
}
}