XDOJ1260 - 递推1
来源:互联网 发布:大掌柜软件官网 编辑:程序博客网 时间:2024/05/08 16:11
Description
在所有的N位数中,有多少个数中有偶数个数字3?
Input
多组数据,每行一个数N(N<=1000)
Output
每行输出一个数,答案mod12345
Sample Input
2
Sample Output
73
解题思路:
源于网上,自己太菜T_T。
以f(n,0)表示n位数中偶数个3的数字有多少,f(n,1)表示n位数中奇数个3的数字有多少。
其中f(1,0)=8(为了递推方便去掉了0,因为0不能做一个多位数的第一位),f(1,1)=1
考虑n的情况,n位数可以通过在n-1位数的最后面添加一位(0~9)得到,如果添加的是3,那么n-1位中原来奇数个3的数变成偶数个3,原来偶数个3的变成奇数个3;如果添加不是3,那么3的奇偶性不变。
所以
f(n,0) = 9*f(n-1,0)+f(n-1,1)
f(n,1) = 9*f(n-1,1)+f(n-1,0)
#include<iostream>using namespace std;const int INF = 1000000000;const int M = 12345;const int D = 1000;long long f[D+1][2];void init(){ f[1][0] = 8; f[1][1] = 1; for(int i=2;i<=D;++i) { f[i][0] = f[i-1][1]+9*f[i-1][0]; f[i][1] = f[i-1][0]+9*f[i-1][1]; if(f[i][0]>INF) f[i][0]%=M; if(f[i][1]>INF) f[i][1]%=M; }}int main(){ int n; init(); while(cin>>n) { if(n==1) cout<<9<<endl; else cout<<f[n][0]%M<<endl; } return 0;}
0 0
- XDOJ1260 - 递推1
- 递推1
- 递推算法(1)
- Num.1:递推算法
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- windows下使用git及github仓库管理项目 入门
- 黑马程序员——枚举类知识点
- uva 11488 - Hyper Prefix Sets(字典树)
- 第十一章 11.2.2节练习
- ApplicationListener接口中的onApplicationEvent被调用两次解决方案
- XDOJ1260 - 递推1
- UIswich的选定值判断用法
- Java类的初始化顺序
- KMP算法学习&总结
- 关于 SQLNET.AUTHENTICATION_SERVICES 验证方式的说明
- 八大排序算法特性复杂度总结
- IOS UI中常见的几种手势
- 配置editplus,讓其支持自動格式化代碼的功能
- 从Drools DSL到antlr