zoukankan      html  css  js  c++  java
  • A

    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
     
     
     
     

    描述

    乐乐现在正在考虑一个简单的函数f(x)。

    如果x < 10 f(x)= x。
    如果x > = 10 f(x)= a0 * f(x - 1)+ a1 * f(2)+ a2 * f(x 3)+……+ a9 * f(10倍);
    和人工智能(0 < =我< = 9)只能是0或1。

    现在,我要给a0 ~ a9和两个正整数k和米,和你能帮乐乐各行各业f(k)%。
     

    输入

    这个问题包含多种测试用例。 请处理的文件。
    在每种情况下,将会有两行。
    在第一行中,有两个正整数k和m。(k < 2 * 10 ^ 9,m < 10 ^ 5)
    在第二行,有十个整数代表a0 ~ a9。
     

    输出

    每种情况下,输出f(k)% m在一行。
     

    样例输入

    9999 1 1 1 1 1 1 1 1 1 1 500 1 0 1 0 1 0 1 0 1 0
     

    样例输出

    45 104年
     
     
     
     这题很简单,不会做的都是SB;
     
    #include<cstdio>
    #include<cstring>
    using namespace std;
    long long a[20],m,n,b[20];
    void f()
    {
        long long s1[14][14],s2[14][14],s3[14][14],sum=0;
        long long i,j,k;
        for (i=0;i<=9;i++)
        for (j=0;j<=9;j++)
        {
            if (j==9)
            {
                s1[i][9]=a[9-i];
                s2[i][9]=a[9-i];
            }
           else if (i==j+1)
            {
                s1[i][j]=1;
                s2[i][j]=1;
            }
            else
            {
                s1[i][j]=0;
                s2[i][j]=0;
            }
        }
        m-=10;
        while (m)
        {
            if (m&1)
            {
                memset(s3,0,sizeof(s3));
                for (i=0;i<=9;i++)
                for (j=0;j<=9;j++)
                for (k=0;k<=9;k++)
                s3[i][j]+=(s1[i][k]*s2[k][j])%n;
                for (i=0;i<=9;i++)
                for (j=0;j<=9;j++)
                   s2[i][j]=s3[i][j];
            }
            memset(s3,0,sizeof(s3));
            for (i=0;i<=9;i++)
            for (j=0;j<=9;j++)
            for (k=0;k<=9;k++)
            s3[i][j]+=(s1[i][k]*s1[k][j])%n;
            for (i=0;i<=9;i++)
            for (j=0;j<=9;j++)
            s1[i][j]=s3[i][j];
            m>>=1;
        }
        for (i=0;i<=9;i++)  sum=((b[i]*s2[i][9])%n+sum)%n;
        printf("%lld
    ",sum);
    }
    int main()
    {
        long long i,j;
        while (~scanf("%lld%lld",&m,&n))
        {
            if (m==0&&n==0)  break;
            for (i=0;i<10;i++) scanf("%lld",&a[i]);
            for (i=0;i<10;i++) b[i]=i%n;
            if (m<10) printf("%lld
    ",m%n);
            else f();
    
        }
        return 0;
    }
  • 相关阅读:
    JS截取文件后缀名
    百度地图API示例:使用vue添加删除覆盖物
    AttributeError: module 'tensorflow' has no attribute 'sub'
    ModuleNotFoundError: No module named 'numpy.core._multiarray_umath' ImportError: numpy.core.multiarray failed to import
    千锋很火的SpringBoot实战开发教程视频
    sublime text3 3176 注册码 License
    linux后台运行jar程序
    使用eclipse的SVN连接码云
    关于git上传文件的一个小问题
    js正则表达式,密码长度要大于6位,由数字和字母组成
  • 原文地址:https://www.cnblogs.com/pblr/p/4662043.html
Copyright © 2011-2022 走看看