【SCOI2009】bzoj1026 windy数
来源:互联网 发布:伊朗 美女 知乎 编辑:程序博客网 时间:2024/06/11 01:55
Description
windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,
在A和B之间,包括A和B,总共有多少个windy数?Input
包含两个整数,A B。
Output
一个整数
先统计出来f[i][j]表示i位数,首位为j,合法的数的个数。
逐位统计的时候,每一位累加与上一位差满足要求的数。
可以先把位数不到的单独统计,然后强制首位不能为零。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int f[15][10],a[15];int qry(int x){ int i,j,k,len=0,ans=0; while (x) { a[++len]=x%10; x/=10; } for (i=len-1;i;i--) for (j=1;j<=9;j++) ans+=f[i][j]; for (i=len;i;i--) { if (i==len) for (j=1;j<a[i];j++) ans+=f[i][j]; else for (j=0;j<a[i];j++) { if (abs(a[i+1]-j)>=2) ans+=f[i][j]; } if (i<len&&abs(a[i+1]-a[i])<2) break; } return ans;}int main(){ int i,j,k,m,n,p,q,x,y,z; for (i=0;i<=9;i++) f[1][i]=1; for (i=1;i<=11;i++) for (j=0;j<=9;j++) for (k=0;k<=9;k++) if (abs(j-k)>=2) f[i][j]+=f[i-1][k]; scanf("%d%d",&m,&n); printf("%d\n",qry(n+1)-qry(m));}
0 0
- [BZOJ1026][SCOI2009]windy数
- [bzoj1026][SCOI2009]windy数
- 【SCOI2009】【BZOJ1026】windy数
- [BZOJ1026][SCOI2009]windy数
- bzoj1026【SCOI2009】windy数
- BZOJ1026 [SCOI2009] windy数
- 【bzoj1026】[SCOI2009]windy数
- 【SCOI2009】bzoj1026 windy数
- [bzoj1026]: [SCOI2009]windy数
- bzoj1026 [SCOI2009]windy数
- bzoj1026: [SCOI2009]windy数
- bzoj1026 [SCOI2009]windy数
- BZOJ1026: [SCOI2009]windy数
- bzoj1026: [SCOI2009]windy数
- [BZOJ1026][SCOI2009]windy数
- 【bzoj1026】[SCOI2009]windy数
- bzoj1026: [SCOI2009]windy数
- bzoj1026 [SCOI2009]windy数
- 第一次写topcoder的注意事项
- HTTP四种常见的POST提交数据方式
- 数组合并+数组去重+数组排序
- Ajax的同步与异步详解
- 1007: [HNOI2008]水平可见直线
- 【SCOI2009】bzoj1026 windy数
- [FT][???]NOIP 2015 运输计划
- 如何批量将word转换成excel表格
- 七牛推流SDK demo 中 关键类的注释
- 非常好的Makefile实用总结
- 已安装nginx动态添加模块
- Struts2中xml配置文件的元素解析
- 杨振宁谈爱因斯坦:“他厉害在哪里?”-------网易科技
- 新手引导页