列表

详情


NC247067. 233的数列

描述

给出长度为n的数列A,B,C,其中A_1,B_1,C_1,a,b,c,d,e,f已知

,,

求 

输入描述

一个正整数n代表数组长度,随后十个正整数A_1,B_1,C_1,a,b,c,d,e,f,p


输出描述

输出一行一个数代表答案

示例1

输入:

23 3 2 3 3 2 3 3 2 3 23

输出:

17

示例2

输入:

2333333 3 2 3 3 2 3 3 2 3 23

输出:

9

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

pypy3 解法, 执行用时: 228ms, 内存消耗: 25208K, 提交时间: 2022-12-09 22:22:21

n,a1,b1,c1,a,b,c,d,e,f,p=map(int,input().split())
a3,b3,c3=a1%p,b1%p,c1%p
count=0
time=0
i=1
while(i<n+1):
    count=(count+a1*b1*c1%p)%p
    time+=1
    a2=a*a1+b*b1
    b2=c*a1+d*c1
    c2=e*a1+f*b1
    a1,b1,c1=a2%p,b2%p,c2%p
    if(time>=1 and  a1==a3 and b1==b3 and c1==c3):
        i*=n//time
        count=count*(n//time)%p
        i+=1
        continue
    i+=1
print(count%p)

C(gcc 7.5.0) 解法, 执行用时: 140ms, 内存消耗: 308K, 提交时间: 2022-12-12 11:51:57

#include<stdio.h>
int n,A1,B1,C1,a,b,c,d,e,f,p,ans=0,num=1;
int main(){
    scanf("%d%d%d%d%d%d%d%d%d%d%d",&n,&A1,&B1,&C1,&a,&b,&c,&d,&e,&f,&p);
    int ans=0;
    for(int i=0;i<n;i++)
    {
        int a1=A1,b1=B1,c1=C1;
        A1=(a*A1+b*B1)%p;
        B1=(c*a1+d*c1)%p;
        C1=(e*a1+f*b1)%p;
        ans+=(a1*b1*c1)%p;
    }
    printf("%d",ans%p);
}

C++(g++ 7.5.0) 解法, 执行用时: 738ms, 内存消耗: 420K, 提交时间: 2022-12-11 17:05:57

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	ll n;
	ll A,B,C,a,b,c,d,e,f,p;
	cin>>n>>A>>B>>C>>a>>b>>c>>d>>e>>f>>p;
	ll sum=0;
	for(ll i=1;i<=n;i++){
		sum=(sum%p+A%p*B%p*C%p)%p;
		ll a1=A,b1=B,c1=C;
		A=a*a1+b*b1;
		B=c*a1+d*c1;
		C=e*a1+f*b1;
		A%=p;B%=p;C%=p;
	}
	cout<<sum<<endl;
	return 0;
}

上一题