NC247067. 233的数列
描述
输入描述
一个正整数代表数组长度,随后十个正整数
输出描述
输出一行一个数代表答案
示例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; }