暑假选拔赛01 ---- 数字问题
2015-07-14 20:07
302 查看
Problem Description
大家对进制一定很清楚,如果一个数字是A进制表示,则它的每一位数字小于A。现在定义一种奇异数字,假设它是A进制,它的每一位与它左边、右边的数字都不是相邻。现在问题是,求解B位A进制的所有整数中奇异数字的个数。比如A=3,B=2,奇异数字就有11 20 22 三个,所以结果是3.Input
输入两个正整数A(1<=A<=100)和B(1<=B<=100).Output
输出一个整数,结果对1000000007取模。Sample Input
3 2Sample Output
3解题思路
数位dp;dp[i][j]表示第i位上数字为j的方案数.
状态转移方程:
当 j != k+1 && j != k-1时, dp[i][j] += dp[i-1][k];
参考代码
#include <stdio.h> #include <string.h> #define MOD 1000000007 #define maxn 110 typedef __int64 ll; ll dp[maxn][maxn]; int main() { memset(dp,0,sizeof(dp)); int a,b; scanf("%d %d",&a,&b); for (int i = 1;i < a;i++) dp[1][i] = 1; for (int i = 2;i <= b;i++) for (int j = 0;j < a;j++) for (int k = 0;k < a;k++) if (j != k+1 && j != k-1){ dp[i][j] += dp[i-1][k]; dp[i][j] %= MOD; } ll ans = 0; for (int i = 0;i < a;i++) ans = (ans+dp[b][i])%MOD; printf("%I64d\n",ans); return 0; }
相关文章推荐
- 浅析CSRF攻击
- grub4dos和winsetupfromusb1.4
- 属性 及 KVC 的使用
- IOStream的用法总结
- iOS中tabBar的基础介绍和用法
- TOJ 3853 Farmer Flabby
- LeetCode 1: Two Sum
- Android清单文件详解(二) ---- 应用程序权限声明
- JS-003-innerText 与 innerHTML 区别
- java存取BLOB类型的数据
- Android中shape中的属性大全
- UITableView简单性能优化
- 3.osg中的CallBack回调、NodeVisitor与鼠标键盘的交互
- AAC LATM - 14496-3部分摘要
- 第十章:对象和类
- Qt画银白色Macbook
- 简单工厂
- 2.osg内置几何类型、osg::Geometry的类型与osg::MatrixTransform
- Swift2学习:Swift概览2-控制流
- leetcode2.1.8.3sum