链接:https://ac.nowcoder.com/acm/problem/21302
来源:牛客网
来源:牛客网
题目描述
给你一个长度为50的数字串,问你有多少个子序列构成的数字可以被3整除
答案对1e9+7取模
答案对1e9+7取模
输入描述:
输入一个字符串,由数字构成,长度小于等于50
输出描述:
输出一个整数
备注:
n为长度
子任务1: n <= 5
子任务2: n <= 20
子任务3: 无限制
#include<iostream> #include<cstdio> #include<string> #include<algorithm> using namespace std; const int mas=1e9+7; int dp[55][3],v[55]; int main() { char x=getchar();int cnt=0; while(x!='\n') { v[++cnt]=x-'0'; x=getchar(); } for(int i=1;i<=cnt;i++) { if(v[i]%3==0) { dp[i][0]=(2*dp[i-1][0]+1)%mas; dp[i][1]=(2*dp[i-1][1])%mas; dp[i][2]=(2*dp[i-1][2])%mas; } if(v[i]%3==1) { dp[i][0]=(dp[i-1][0]+dp[i-1][2])%mas; dp[i][1]=(dp[i-1][1]+dp[i-1][0]+1)%mas; dp[i][2]=(dp[i-1][2]+dp[i-1][1])%mas; } if(v[i]%3==2) { dp[i][0]=(dp[i-1][0]+dp[i-1][1])%mas; dp[i][1]=(dp[i-1][1]+dp[i-1][2])%mas; dp[i][2]=(dp[i-1][2]+dp[i-1][0]+1)%mas; } } cout<<dp[cnt][0]<<endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!