For a number,if the length of continuous odd digits is even and the length of continuous even digits is odd,we call it odd-even number.Now we want to know the amount of odd-even number between L,R(1<=L<=R<= 9*10^18).
InputFirst line a t,then t cases.every line contains two integers L and R.OutputPrint the output for each case on one line in the format as shown below.Sample Input
2 1 100 110 220Sample Output
Case #1: 29 Case #2: 36
数位dp学习题。
代码:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #define MAX 200005 #define inf 0x3f3f3f3f using namespace std; long long dp[20][2][2],bound[20]; long long dfs(int pos,int pre,int ispre,bool lead,bool limit)///pos表示位置 从高位开始 pre表上上一位的1奇0偶性 ispre表示上一位奇偶性连续个数的奇偶性 lead前导0 { if(pos == -1)return (pre ^ ispre);///最低一位也过了判断 最后这一串连续的 奇数或偶数的 个数奇偶性是否满足 满足返回真 if(!limit && !lead && dp[pos][pre][ispre] != -1)return dp[pos][pre][ispre];///如果没限制 也不是 前导 0 dp当前位置还记录过 直接返回 int up = (limit ? bound[pos] : 9);///确定当前位的限制 如果上一位到了限制位 那么这一位也需要限制(比如120,百位是1的情况下十位最高是2,百位不足1,十位可以到9) long long ans = 0;///记录之后位的满足个数 for(int i = 0;i <= up;i ++) { if(lead && !i)ans += dfs(pos - 1,1,0,true,limit && i == up);///前导0 不算在内 else if(!(i % 2 ^ pre))ans += dfs(pos - 1,pre,ispre ^ 1,false,limit && i == up);///奇偶性与上一位相同 else if((i % 2 ^ pre) && (pre ^ ispre))ans += dfs(pos - 1,i % 2,1,false,limit && i == up);///奇偶性不同 且上一位奇偶性的连续个数的奇偶性正确 不然没必要继续 } if(!limit && !lead)dp[pos][pre][ispre] = ans;///无限制 无前导0 可以记录 方便下次直接返回 return ans; } long long solve(long long t) { long long c = 0; while(t) { bound[c ++] = t % 10; t /= 10; } return dfs(c - 1,1,0,true,true);///为了能进入下一层 pre 和 ispre不能相同 相当于前导0 } int main() { long long l,r; int n; memset(dp,-1,sizeof(dp)); scanf("%lld",&n); for(int i = 1;i <= n;i ++) { scanf("%lld%lld",&l,&r); printf("Case #%d: %lld\n",i,solve(r) - solve(l - 1)); } }
如果觉得有帮助,点个推荐啦~
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)