链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
给你一个长度为50的数字串,问你有多少个子序列构成的数字可以被3整除
答案对1e9+7取模
输入描述:
输入一个字符串,由数字构成,长度小于等于50
输出描述:
输出一个整数
示例1
输入
复制132
132
输出
复制3
3
示例2
输入
复制9
9
输出
复制1
1
示例3
输入
复制333
333
输出
复制7
7
示例4
输入
复制123456
123456
输出
复制23
23
示例5
输入
复制00
00
输出
复制3
3
备注:
n为长度 子任务1: n <= 5 子任务2: n <= 20 子任务3: 无限制
比赛的时候糊涂了,2的50次方也敢用爆搜,也不好剪枝
所谓DP其实就是用分类(划分集合的方法)把一个时间复杂度高的搜索问题
变成DP问题, 如果没有分类,那就和普普通通的爆搜问题没有区别
#include <bits/stdc++.h>
using namespace std;
const int N=55;
const int mode=1e9+7;
int f[N][5];
char