数据范围???

P1349 广义斐波那契数列

@[SSerxhs](/space/show?uid=29826) 为什么要? ```cpp #include <bits/stdc++.h> #define newline printf ("\n") #define space printf (" ") #define cinfalse ios::sync_with_stdio(false) #define fread(a) freopen (a".in", "r", stdin), freopen(a".out", "w", stdout) #define MAXN 5 using namespace std; long long p; struct Martix { long long g[MAXN][MAXN]; void clear() { memset (g, 0, sizeof (g)); return ; } Martix operator * (const Martix &b) const { Martix res; res.clear(); for (int i = 0; i < 2; i ++) for (int j = 0; j < 2; j ++) for (int k = 0; k < 2; k ++) res.g[i][j] += (g[i][k]*b.g[k][j])%p, res.g[i][j] %= p; return res; } Martix operator *= (const Martix &b) { return *this = *this*b; } Martix operator ^ (long long k) const { Martix a = *this; Martix res; res.clear(); for (int i = 0; i < 2; i ++) res.g[i][i] = 1; while (k) { if (k&1) res *= a; a *= a, k >>= 1; } return res; } Martix operator ^= (long long k) { return *this = *this^k; } }; Martix a, b; long long read() { long long x = 0, f = 1; char c = getchar(); while(c < '0' || c > '9') { if(c == '-') f = -1; c = getchar(); } while(c >= '0' && c <= '9') x = x*10 + c-'0', c = getchar(); return f*x; } long long n; long long A[2], f[2]; int main() { for (int i = 0; i < 2; i ++) A[i] = read(); for (int i = 0; i < 2; i ++) f[i] = read(); n = read(), p = read(); a.g[0][0] = A[0], a.g[0][1] = A[1]; a.g[1][0] = 1, a.g[1][1] = 0; a ^= (n-2); printf ("%lld", (a.g[0][0]*f[1]+a.g[0][1]*f[0])%p); return 0; } ``` 这不就完了吗?
by tocek_shiki @ 2018-10-29 00:13:20


@[fff团666](/space/show?uid=49562) 这题不用是因为这题开在了long long以内,谁知道会不会出像4000那样的毒瘤题
by SSerxhs @ 2018-10-29 01:07:37


kg is fun
by Rieman_sum @ 2023-07-13 09:21:21


上一页 |