本文主要是介绍Vijos P1725随机数生成器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
暴力三个点的longlong 真是丧心!
以后要检查是不是相乘爆ll
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;long long ans[3];
long long tmp[3][3];
long long f[3][3];
long long x0,m,aa,bb,n,g;
long long kkk(long long a,long long b)
{if(a<b) swap(a,b);long long ans=0;if(b==0) return 0;while(b!=1){//cout<<b<<endl;if(b&1) ans=(ans+a)%m;a=(a+a)%m;b>>=1;}return (ans+a)%m;
}
long long cal(long long a[][3],long long b[][3],long long c[][3])
{long long x[3][3];memset(x,0,sizeof(x));for(long long i=1;i<=2;i++)for(long long j=1;j<=2;j++)for(long long k=1;k<=2;k++)x[i][j]=(x[i][j]+kkk(a[i][k],b[k][j]))%m;for(long long i=1;i<=2;i++)for(long long j=1;j<=2;j++)c[i][j]=x[i][j];
}int main()
{cin >> m >> aa >> bb >> x0 >>n >>g;f[1][1]=aa%m;f[2][1]=bb%m;f[2][2]=1;tmp[1][1]=1;tmp[2][2]=1;while(n!=1){if(n&1) cal(tmp,f,tmp);cal(f,f,f);n>>=1;}cal(f,tmp,f);x0%=m;cout<<(kkk(f[1][1],x0)+f[2][1])%m%g;return 0;
}
这篇关于Vijos P1725随机数生成器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!