題解:需要先推遞推公式,發現遞推後,直接o(k^2)暴力找就行,注意當r=1的時候,分母為0,需要特判,使用fold篩處理。
題目鏈結
#includeusing namespace std;
typedef long long int ll;
const int maxn = 2e3 + 10;
const ll mod = 1e9 + 7;
ll s[maxn], rr[maxn];
ll fac[maxn], inv[maxn];
ll pow(ll a, ll p, ll mod) //p=(mod-2)用來求逆元
a = (a*a) % mod;
p >>= 1;
} return ans;
}ll c(int n, int m)
void init()
}//fold篩
int pv[maxn]; //前幾項, 前面無效值用0佔位
int st = 1, ed = maxn; //使用上面陣列下標為[st,ed]的資料
ll fac_1[maxn + 5], inv_1[maxn + 5], facinv[maxn + 5];
ll pre[maxn + 5], saf[maxn + 5];
void init_fold()
}ll cal(ll x0)
ll res = 0;
for (int i = 0; i <= n; ++i)
return res;
}int main()
s[i] = (s[i] * inv_ + mod) % mod;
}cout << s[k] << endl;
} else//當r等於1的時候,因為分母不能為0,所以需要特殊計算,使用fold即可
ed = k + 2;
init_fold();
cout << cal(n) << endl;
} }return 0;
}
51nod 1822 序列求和 V5
我是zz吧 nonprime i prime j 0 還以為是要卡常,卡了半天就是過不掉 我們來說這道題 首先,我們考慮乙個 k 2 做法 f n sum i r r 1 f n sum i r sum i r r 1 f n n r sum i 1 i r r 1 f n n r sum sum ...
51nod1228 序列求和
設t n n k,s n n i 1t i 給出n和k,求s n 例如k 2,n 5,s n 1 2 2 2 3 2 4 2 5 2 55。由於結果很大,輸出s n mod 1000000007的結果即可。t 5000 k 2000 n 10 18 n很大,所以複雜度不應該帶n 關於求自然數冪和,這...
51nod 1228 序列求和
t n n k,s n t 1 t 2 t n 給出n和k,求s n 例如k 2,n 5,s n 1 2 2 2 3 2 4 2 5 2 55。由於結果很大,輸出s n mod 1000000007的結果即可。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t 5000 第2 t ...