2024.2.9 鲜花

推歌

《壹雫空》

もしこの雨が上がっても 就算这场大雨就此停止
忘れずに歩いてくよ 我也将永不忘怀向前行
最初のひとしずくに 顔上げた今日の僕を 那抬头仰望最初一滴雨滴的今天的我
透明な傘で作る ひとり分だけの世界 透明的伞创造出的一人份的世界
(遮って隠れた) (遮蔽雨水隐藏身影)
そっと逃げ込んでいた 悄悄逃入其中
ビニール越しの空から 从塑胶布另一头的天空
こぼれ落ちる音響いて 响起了雨珠落下的音色
(弾けた合図) (随着信号响起)
滲む心へと溶けた 融入渗透了的内心之中
泣きじゃくっている この空といこう 与哽咽啜泣的 这片天空同行吧
(アスファルト染めていく 溢れ出したスコール) (雨水染遍了柏油路 强风随之满溢而出)
通り過ぎる時を 待つだけじゃなくて 不光只是在等待 已逝去的时光
僕は見つめていたいんだよ 我是希望能够找到它啊
無色でもそこにあるもの 那无色却存在着的事物
この雨が上がってく時 当这场大雨渐渐止息时
なにもなかったように 仿佛一切都没发生过似地
消えてく傘花みたいに心は 逐渐消失的伞如花一般
上手に折り畳めないから 正因无法好好折起内心
過ぎ去ってしまう瞬間を 那些稍纵即逝的瞬间
僕はあつめたいよ 多渴望能够收集它们
ああ ひとしずくを 啊啊 那一滴雨珠
とめどなく傘にすべり落ちる 不断从伞上滑落而下
雫が揺れて描いてく(模様) 水滴摇曳绘制出的(模样)
風に震えては 在风中摇摆
ぐずついてる僕みたいな 那乌云密布的今日天空
くすんでる今日を映した 映照出郁闷不安的内心
迷い続けるこの空といこう 同这不断迷茫的天空为伴
(曖昧に透ける色 眺めていたい) (模糊又透明的色彩 我还想继续观望着)
ただよう雲だって 1秒先なんて 那漂浮的云朵 也不知1秒后的未来
わからないままいくんだろう 即便是如此但仍在前行
不安で鈍く霞んでく 明日も 就算不安 使得明日朦胧暗淡
もしこの雨が上がっても 就算这场大雨就此停止
忘れたくないから 我也不愿忘记
たった今を書きとめておきたいんだ 只想记录并留下此刻
この手じゃ届かない 这只手触及不到的
あの空から点線の糸で 从那片天空落下的点线
つなぐように届いた ひとしずく 好似连接着 那一滴雨珠
いまこの雨が上がってく 此刻这大雨正逐渐停歇
最後のひと粒が 那最后一颗小小的雨滴
小さく光って僕を映した 微小地闪光并映射出我
まだ道は乾かないだろう 前方道路仍尚未干透
潤んだ風を吸い込んだ 轻轻吸入湿润的空气
僕は連れていこう ああ ひとしずくを 我会将其带走 啊啊 那一滴雨珠

牢骚:生成函数好难。xfg 好唐。

前置知识:单位根,多项式基础。

\(w_n\) 表示除 \(1\) 以外幅角最小的 \(n\) 次单位根。

其实就是一个式子。

\[[n|k]=\frac{1}{n}\sum_{i=0}^{n-1}w_{n}^{ik} \]

证明

比较显然吧,考虑分讨。

\(n|k\),有 \(w_n^{ik}=w_n^0=1\),所以为 \(1\)

反之,根据等比数列求和公式,原石 \(=\frac{1}{n}\frac{w_n^{nk}-1}{w_n^k-1}=0\)

但是光是知道这玩意没有什么用,考虑如何将它放到多项式上。

假设要求一个多项式的特定倍数系数和。

\[\begin{aligned} \sum_{i=0}^{\left\lfloor\frac{n}{k}\right\rfloor}[x^{ik}]f(x)&=\sum_{i=0}^n[k|i][x^i]f(x)\\ &=\sum_{i=0}^{n}[x^i]f(x)\frac{1}{k}\sum_{j=0}^{k-1}w_k^{ij}\\ &=\frac{1}{k}\sum_{i=0}^nf_i\sum_{j=0}^{k-1}w_k^{ij}\\ &=\frac{1}{k}\sum_{j=0}^{k-1}\sum_{i=0}^nf_i(w_{k}^j)^i\\ &=\frac{1}{k}\sum_{j=0}^{k-1}f(w_k^j) \end{aligned}\]

例题:LJJ 学二项式定理

解释

先考虑把 \(a_{i\bmod 4}\) 扔出来单独枚举,假设枚举的为 \(k\),显然后面的式子就是 \(\sum\limits_{i=0}^n\mathrm{C}_{n}^is_i\),但是对于每个 \(i\),当且仅当 \(i\bmod 4=k\) 时有值,考虑将整个多项式向左平移 \(k\) 位,这样就都转化成了对于 \(i\bmod 4=0\) 求值。

不难想到设 \(f(x)=\sum\limits_{i=0}^n\mathrm{C}_{n}^is^ix^i\)。根据二项式定理,显然有 \(f(x)=(sx+1)^n\)

那么原式就变成了 \(\sum\limits_{i=0}^3a_i\sum\limits_{j=0}^n[4|j]f(x)\),根据上面那个式子就是 \(\sum\limits_{i=0}^3a_i\frac{1}{4}\sum\limits_{j=0}^{3}f(w_4^j)\)

注意这个式子没有计算平移,对于每个的 \(f(w_4^j)\),乘上 \((w_4^j)^i\) 即可。

由于取模,所以用原根替代单位根。

code
#include<bits/stdc++.h>
using namespace std;
#define rep(i,s,t,p) for(int i = s;i <= t;i += p)
#define drep(i,s,t,p) for(int i = s;i >= t;i -= p)
#ifdef LOCAL
  auto I = freopen("in.in","r",stdin),O = freopen("out.out","w",stdout);
#else
  auto I = stdin,O = stdout;
#endif
using ll = long long;using ull = unsigned long long;
using db = double;using ldb = long double;
#define int long long
const int Mod = 998244353;
int times,test,testid;
int n,s,a[4],w[4],iw[4][4];
int qpow(int a,int b,int Mod = Mod){
  int res = 1;
  for(;b;b >>= 1,a = 1ll*a*a%Mod)
    if(b&1) res = 1ll*res*a%Mod;
  return res;
}
int invi(int a){return qpow(a,Mod-2,Mod);}
signed main(){
  cin.tie(nullptr)->sync_with_stdio(false);
  int g = qpow(3,(Mod-1)/4);
  w[0] = 1;for(int i = 1;i <= 3; ++i) w[i] = 1ll*w[i-1]*g%Mod;
  for(int i = 0;i < 4; ++i) for(int j = 0;j < 4; ++j) iw[i][j] = invi(qpow(w[i],j,Mod));
int times;cin>>times;
for(test = 1;test <= times; ++test){
  cin>>n>>s;
  for(int i = 0;i < 4; ++i) cin>>a[i];
  int ans = 0;
  for(int now = 0;now < 4; ++now){
    int res = 0;
    for(int i = 0;i < 4; ++i)
      res = (res + 1ll*invi(w[i*now%4])*qpow((1ll*s*w[i]+1)%Mod,n)%Mod);
    ans = (ans + res*748683265ll%Mod*a[now]%Mod)%Mod;
  }
  cout<<ans<<'\n';
}
}
p

image

posted @ 2025-02-09 21:20  CuFeO4  阅读(73)  评论(1)    收藏  举报