Submission #36273738


Source Code Expand

#include <bits/stdc++.h>
#include <atcoder/modint>
#include <atcoder/convolution>
const int MOD = 998244353;
using mint = atcoder::static_modint<MOD>;

#define rep(i,a,n) for (int i=a;i<(int)n;i++)
#define per(i,a,n) for (int i=n;i-->(int)a;)

int read(){int r;scanf("%d",&r);return r;}

const int N=14000000;
mint fac[N+10]={1};
mint ifac[N+10];
mint binom(int n,int m){return (m>n||m<0)?0:(fac[n]*ifac[m]*ifac[n-m]);}

int main(){
  rep(i,1,N+1) fac[i]=fac[i-1]*i;
  ifac[N]=fac[N].inv();
  per(i,0,N) ifac[i]=ifac[i+1]*(i+1);

  int n=read();
  int m=read();
  mint ans =0;

  rep(s12,0,m+1){ // mod part
    mint s=0;
    rep(fi,0,3) s+=binom(n-1,s12-fi-(n-1));
    ans += s*binom(n+(m-s12)/3,n);
  }
  printf("%d\n",ans.val());
  return 0;
}

// ai [0,M]
// 单调递增
// 相邻mod3 不同
//
// f(n,m) = 范围 [0..m] n个, 第一个 == 0
// ans = sum f(n,0..m)
//
// f(n,m) = sum f(n-1,m-1..m-2..m-非3倍数)
// 
// f(n) = f(n-1) * poly(0,1,1,0,1,1,0,1,1,0,1,1,...)
//
// f(1) = (1,1,1,1,1,...
//
// f(n) = f(1) * poly(....)^{n-1}
//
//         1 1 1 1 1 1 1 1
//         0 1 2 2 3 4 4 5
// poly = x(1+x^3+x^6) + x^2(1+x^3+x^6) +...
//
// poly = (x+x^2)/(1-x^3)
// 
// (x+x^2)/(1-x^3)
// 
// 1/(1-x)^2 * [(x+x^2)/(1-x^3)]^{n-1}
// 
// 的m次方的系数
//

Submission Info

Submission Time
Task G - Count Sequences
User cromarmot
Language C++ (GCC 9.2.1)
Score 600
Code Size 1268 Byte
Status AC
Exec Time 332 ms
Memory 113152 KiB

Compile Error

./Main.cpp: In function ‘int read()’:
./Main.cpp:10:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   10 | int read(){int r;scanf("%d",&r);return r;}
      |                  ~~~~~^~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 49
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_smallNM_00.txt, 01_smallNM_01.txt, 01_smallNM_02.txt, 01_smallNM_03.txt, 01_smallNM_04.txt, 01_smallNM_05.txt, 01_smallNM_06.txt, 01_smallNM_07.txt, 01_smallNM_08.txt, 01_smallNM_09.txt, 01_smallNM_10.txt, 01_smallNM_11.txt, 02_smallN_00.txt, 02_smallN_01.txt, 02_smallN_02.txt, 02_smallN_03.txt, 02_smallN_04.txt, 02_smallN_05.txt, 02_smallN_06.txt, 03_rnd_00.txt, 03_rnd_01.txt, 03_rnd_02.txt, 03_rnd_03.txt, 03_rnd_04.txt, 03_rnd_05.txt, 03_rnd_06.txt, 03_rnd_07.txt, 04_max_00.txt, 04_max_01.txt, 04_max_02.txt, 04_max_03.txt, 04_max_04.txt, 04_max_05.txt, 04_max_06.txt, 04_max_07.txt, 04_max_08.txt, 04_max_09.txt, 04_max_10.txt, 04_max_11.txt, 04_max_12.txt, 04_max_13.txt, 04_max_14.txt, 04_max_15.txt, 04_max_16.txt, 04_max_17.txt, 04_max_18.txt, 04_max_19.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 183 ms 113152 KiB
00_sample_01.txt AC 260 ms 112992 KiB
01_smallNM_00.txt AC 181 ms 113136 KiB
01_smallNM_01.txt AC 182 ms 113048 KiB
01_smallNM_02.txt AC 184 ms 113148 KiB
01_smallNM_03.txt AC 181 ms 113144 KiB
01_smallNM_04.txt AC 182 ms 113092 KiB
01_smallNM_05.txt AC 182 ms 113056 KiB
01_smallNM_06.txt AC 182 ms 112988 KiB
01_smallNM_07.txt AC 183 ms 113116 KiB
01_smallNM_08.txt AC 183 ms 113104 KiB
01_smallNM_09.txt AC 186 ms 113148 KiB
01_smallNM_10.txt AC 181 ms 113104 KiB
01_smallNM_11.txt AC 182 ms 113092 KiB
02_smallN_00.txt AC 260 ms 113048 KiB
02_smallN_01.txt AC 260 ms 113060 KiB
02_smallN_02.txt AC 260 ms 113092 KiB
02_smallN_03.txt AC 261 ms 112988 KiB
02_smallN_04.txt AC 261 ms 113092 KiB
02_smallN_05.txt AC 259 ms 113056 KiB
02_smallN_06.txt AC 260 ms 113092 KiB
03_rnd_00.txt AC 220 ms 113048 KiB
03_rnd_01.txt AC 226 ms 112984 KiB
03_rnd_02.txt AC 191 ms 113040 KiB
03_rnd_03.txt AC 298 ms 113096 KiB
03_rnd_04.txt AC 205 ms 113144 KiB
03_rnd_05.txt AC 295 ms 113104 KiB
03_rnd_06.txt AC 199 ms 113148 KiB
03_rnd_07.txt AC 222 ms 113048 KiB
04_max_00.txt AC 263 ms 113084 KiB
04_max_01.txt AC 332 ms 112988 KiB
04_max_02.txt AC 300 ms 112992 KiB
04_max_03.txt AC 278 ms 113036 KiB
04_max_04.txt AC 270 ms 112992 KiB
04_max_05.txt AC 262 ms 112988 KiB
04_max_06.txt AC 262 ms 112988 KiB
04_max_07.txt AC 262 ms 113100 KiB
04_max_08.txt AC 263 ms 113048 KiB
04_max_09.txt AC 263 ms 112988 KiB
04_max_10.txt AC 262 ms 112992 KiB
04_max_11.txt AC 262 ms 113048 KiB
04_max_12.txt AC 262 ms 113144 KiB
04_max_13.txt AC 262 ms 113056 KiB
04_max_14.txt AC 263 ms 113048 KiB
04_max_15.txt AC 263 ms 113044 KiB
04_max_16.txt AC 264 ms 112992 KiB
04_max_17.txt AC 262 ms 113144 KiB
04_max_18.txt AC 262 ms 113120 KiB
04_max_19.txt AC 261 ms 112984 KiB