个人技术分享

P1011 [NOIP1998 提高组] 车站 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 

import java.util.*;

public class Main{

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int n = sc.nextInt();
        int m = sc.nextInt();
        int x = sc.nextInt();

        int[] sum1 = new int[25];//装a的系数
        int[] sum2 = new int[25];//装b的系数
        if(n<=2){
            System.out.println(a);
            return;
        }
        if(n==3){
            System.out.println(2*a);
            return;
        }
       sum1[2] = 1;
        sum1[3] = 2;
        for(int i = 4;i<=n;i++){//遍历(必须从4开始,前面没有规律)
            sum1[i] = sum1[i-1]+sum1[i-2]-1;//计算系数
            sum2[i] = sum2[i-1]+sum2[i-2]+1;
        }

        int b = (m-a*sum1[n-1])/sum2[n-1];//公式
        System.out.printf("%d",a*sum1[x]+b*sum2[x]);
    }
}