概述
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int mod = 998244353;
typedef long long ll;
int n;
int a[N];
int f[N][10];
void solve() {
cin >> n;
for (int i = 1; i <= n ;i++) {
cin >> a[i];
a[i] %= 9;
}
for (int i = 1; i<= n; i++) {
(f[i][a[i]] += 1) %mod;
for (int j = 0; j < 9; j++) {
(f[i][j] += f[i - 1][j]) %=mod;
(f[i][(j +a[i]) % 9] += f[i -1][j]) %=mod;
}
}
for (int i =1; i<= 8; i ++) cout << f[n][i] << " ";
cout << f[n][0] << endl;
}
int main () {
int t;
t = 1;
while (t --) solve();
return 0;
}
https://ac.nowcoder.com/acm/contest/23106/A 关键在于每个数的根为对9取模。 然后就可以转换为01背包问题 为什么没想出来,没往dp的方向想,甚至没有认出是01背包。01背包就是每个物品取或者不取。
最后
以上就是鲤鱼纸鹤为你收集整理的九小时九个人九扇门的全部内容,希望文章能够帮你解决九小时九个人九扇门所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复