Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33710 申东铉 【S】T3 C++ 解答错误 10 9 MS 516 KB 1203 2024-10-20 14:29:58

Tests(1/10):


#include <bits/stdc++.h> #define int long long using namespace std; const int md = 998244353; int n,a[514],mx; signed main () { cin >> n; for (int i = 1;i <= n;i++) { cin >> a[i]; mx = max(mx,a[i]); } if (n <= 2) { int ans = 0; if (n == 1) { bool b[514]; memset(b,0,sizeof(b)); b[a[1]] = 1; for (int i = mx;i >= 1;--i) { for (int j = 0;j <= mx;++j) { b[j % i] |= b[j]; } } for (int i = 0;i <= mx;++i) { ans += b[i]; } cout << ans << endl; return 0; } bool b[514][514]; memset(b,0,sizeof(b)); b[a[1]][a[2]] = 1; for (int i = mx;i >= 1;--i) { for (int x = 0;x <= a[1];++x) { for (int y = 0;y <= a[2];++y) { b[x % i][y % i] |= b[x][y]; } } } for (int x = 0;x <= a[1];++x) { for (int y = 0;y <= a[2];++y) { ans += b[x][y]; } } cout << ans << endl; return 0; } int f[514],ans = 0; bool b[514]; f[n] = 1; for (int i = n;i >= 0;--i) { f[i] = f[n]; for (int j = i + 1;j < n;++j) { if ((j + 1) % (i + 1) == 0) { continue; } f[i] += f[j]; f[i] %= md; } ans += f[i]; ans %= md; } cout << ans << endl; return 0; }


测评信息: