CCPC-Wannafly Camp #4 电音之王 【O(1)快速乘法】

2019-04-14 16:31发布

这里写图片描述 板子题
知道这个板子就可以很容易暴力了 #include #define cl(a) memset(a,0,sizeof(a)) using namespace std; typedef long long LL; int n,m,k; const int maxn=1050; const LL inf=0x3f3f3f3f; inline long long multi(long long x,long long y,long long mod) { long long tmp=(x*y-(long long)((long double)x/mod*y+1.0e-8)*mod); return tmp<0 ? tmp+mod : tmp; } int main (){ int t; ios::sync_with_stdio(false); LL a0,a1,m0,m1,c,M,k; cin>>t; while (t--){ LL ans; cin >>a0>>a1>>m0>>m1>>c>>M>>k; ans = multi(a0,a1,M); // printf("%lld ",a0); // printf("%lld ",a1); for (int i=2;i<=k;i++){ LL tmp = a1; LL p1 = multi(m0,a1,M); LL p2 = multi(m1,a0,M); a1 = (p1+p2) %M; a1 = (a1+c)%M; // printf("%lld ",a1); ans = multi(ans,a1,M); a0 = tmp; } cout<" "; } return 0; }