编程介的小学生 2017-05-29 06:21 采纳率: 20.5%
浏览 1262
已采纳

A Simple Math Problem

Problem Description
Lele now is thinking about a simple function f(x).

If x < 10 f(x) = x.
If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10);
And ai(0<=i<=9) can only be 0 or 1 .

Now, I will give a0 ~ a9 and two positive integers k and m ,and could you help Lele to caculate f(k)%m.

Input
The problem contains mutiple test cases.Please process to the end of file.
In each case, there will be two lines.
In the first line , there are two positive integers k and m. ( k<2*10^9 , m < 10^5 )
In the second line , there are ten integers represent a0 ~ a9.

Output
For each case, output f(k) % m in one line.

Sample Input
10 9999
1 1 1 1 1 1 1 1 1 1
20 500
1 0 1 0 1 0 1 0 1 0

Sample Output
45
104

  • 写回答

1条回答

  • EBABEFAC 2017-05-29 07:23
    关注
     import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            printResult();
        }
    
        public static void printResult() {
            Scanner scanner = new Scanner(System.in);
            while(scanner.hasNextInt()) {
                int k = scanner.nextInt();
                int m = scanner.nextInt();
                int[] arr = new int[10];
                for(int i = 0; i < 10; i++)
                    arr[i] = scanner.nextInt();
                System.out.println(getResult(arr, k) % m);
            }
    
        }
    
        public static int getResult(int[] a, int x) {
            if(x < 10)
                return x;
            ArrayList<Integer> list = new ArrayList<>();
            int result = 0;
            for(int i = 0; i <= x; i++) {
                if(i < 10)
                    result = i;
                else {
                    result = a[0]*list.get(i-1)+a[1]*list.get(i-2)+a[2]*list.get(i-3)+a[3]*list.get(i-4)+a[4]*list.get(i-5) +
                            a[5]*list.get(i-6)+a[6]*list.get(i-7)+a[7]*list.get(i-8)+a[8]*list.get(i-9)+a[9]*list.get(i-10);
                }
                list.add(result);
            }
            return list.get(x);
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services