Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Hii
#include<bits/stdc++.h> using namespace std; #define ll int #define pb push_back #define mod 1000000007 #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #define ordered_set tree<pair<ll,ll>, null_type,less<pair<ll,ll>>, rb_tree_tag,tree_order_statistics_node_update> #define Find find_by_order #define Pos order_of_key #define N 1000000 #define F(i,n) for(int i=1;i<=n;i++) #define f(i,n) for(int i=0;i<n;i++) #define N 1000000 #define MOD 1000000007 #define SZ 6 #define FAST ios_base::sync_with_stdio(); cin.tie(0); cout.tie(0); const int M = 1e9+7; int pw(int a,int b) { int res = 1; a%=M; b%=(M-1); while(b) { if(b&1) res=(res*a)%M; a=(a*a)%M; b>>=1; } return res; } ll power(ll n,ll p) { if(p==0) return 1; ll P=power(n,p/2); if(p%2==0) return ((((P%mod)*(P%mod))%mod)*(1%mod))%mod; if(p%2==1) return ((((P%mod)*(P%mod))%mod)*(n%mod))%mod; } ll prime(ll n) { if(n==1) return 0; for(ll i=2;i<=sqrt(n);i++) { if(n%i==0) return 0; } return 1; } ll fact[N+1]; ll inv[N+1]; ll pre() { fact[0]=1; inv[0]=1; for(int i=1;i<=N;i++) { fact[i]=(fact[i-1]*i)%mod; inv[i]=power(fact[i],mod-2)%mod; } } ll ncr(ll n,ll r) { if(n<r) return 0; if(r==0 || r==n) return 1; return (((fact[n]*inv[r])%mod)*inv[n-r])%mod; } struct ft { vector<ll> bit; ll n; ft(ll n1) { n = n1; bit.assign(n,0); } ll sum(ll r) { ll ret = 0; for(; r >= 0; r = (r&(r+1))-1) ret += bit[r]; return ret; } void add(ll idx, ll d) { for(; idx < n; idx = idx | (idx+1)) bit[idx] += d; } ll sum(ll l, ll r) { return sum(r) - sum(l-1); } }; int add(int a, int b) { int res = a + b; if(res >= MOD) return res - MOD; return res; } int mult(int a, int b) { long long res = a; res *= b; if(res >= MOD) return res % MOD; return res; } struct matrix { int **arr; void reset(int sz=5) { arr=(int **)malloc(sizeof(int *)*sz); for(int i=0;i<sz;i++) { arr[i]=(int *)malloc(sizeof(int)*sz); } //memset(arr, 0, sizeof(arr)); } void makeiden() { for(int i=0;i<SZ;i++) { arr[i][i] = 1; } } matrix operator + (const matrix &o) const { matrix res; for(int i=0;i<SZ;i++) { for(int j=0;j<SZ;j++) { res.arr[i][j] = add(arr[i][j], o.arr[i][j]); } } return res; } matrix operator * (const matrix &o) const { matrix res; for(int i=0;i<SZ;i++) { for(int j=0;j<SZ;j++) { res.arr[i][j] = 0; for(int k=0;k<SZ;k++) { res.arr[i][j] = add(res.arr[i][j] , mult(arr[i][k] , o.arr[k][j])); } } } return res; } }; matrix power(matrix a, int b) { matrix res; res.makeiden(); while(b) { if(b & 1) { res = res * a; } a = a * a; b >>= 1; } return res; } void solve() { matrix a; a.reset(6); a.makeiden(); } signed main() { FAST; pre(); ll t=1; cin>>t; while(t--) { solve(); } }
run
|
edit
|
history
|
help
0
Camel case
Suma
1234
reverseKNode
ReplaceGreaterSum in BST
a simple tuple implementation
Const Return Test
27
Two-phase sample with GCC
BoauthCPP