省略
省略
C++に変換後のコードはこちら
#define MD 998244353
int N;
char X[200002];
mint cnt[1d4]; int y[1d4], sz;
{
int i, j, k, d;
mint res;
rd(N,X);
rep(i,N) X[i] -= '0';
REP(k,1,N+1) if(N % k == 0 && (N / k) % 2 == 1){
y[sz] = k;
d = gcd(N, 2k);
rep(i,d) cnt[sz] = 2 cnt[sz] + X[i];
cnt[sz] += 1;
rep(i,d,N){
j = 1 - X[i-d];
if(j > X[i]) cnt[sz] -= 1, break;
if(j < X[i]) break;
}
sz++;
}
rep(i,sz) rep(j,i) if(y[i] % y[j] == 0) cnt[i] -= cnt[j];
res = 0;
rep(i,sz) res += 2 * y[i] * cnt[i];
wt(res);
}
Current time: 2024年04月26日19時58分02秒
Last modified: 2019年10月06日04時49分29秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Grand_Contest AGC039 AGC_C
トップページに戻る
Logged in as: unknown user (not login)