Fork me on GitHub

简单的数学问题

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.?

输入

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*1000000000,m < 10000) In the second line , there are ten integers represent a0 ~ a9.

输出

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

样例输入

10 9999
1 1 1 1 1 1 1 1 1 1
20 500
1 0 1 0 1 0 1 0 1 0

样例输出

45
104
#include<iostream>
using namespace std;
int a[10];
int f(int x)
{
    int y;
    if(x<10)
        y=x;
    else
        y=a[0]*f(x-1)+a[1]*f(x-2)+a[2]*f(x-3)+a[3]*f(x-4)+a[4]*f(x-5)+a[5]*f(x-6)+a[6]*f(x-7)+a[7]*f(x-8)+a[8]*f(x-9)+a[9]*f(x-10);
    return y;

}
int main()
{
     int k,m,i;
 while(cin>>k>>m)
 {
  for(i=0;i<10;i++) cin>>a[i];
 cout<<f(k)%m<<endl;
 }
 return 0;
} 

 

posted @ 2018-10-23 18:43  Lazy.Cat  阅读(217)  评论(0编辑  收藏  举报