ZZUOJ1196: 单调数

/*
   注意的事项:是输出小于 10^n的正整数的个数哦!开始的时候总比样例输出多一个数,
   纠结了好久,原来是 0加了进去了!

   dpI[n][m]表示的是第n位添加数字m(0....9)的构成单调递增数个数
   dpD[n][m]表示的是第n位添加数字m(0....9)的构成单调递减数个数
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;

long long dpI[105][10];
long long dpD[105][10];

void init(){
   for(int i=1; i<10; ++i)
       dpI[1][i]=dpD[1][i]=1;
   for(int i=2; i<=100; ++i){
        for(int j=0; j<10; ++j){
           if(j!=0){//单调递增的数一定没有数字0,因为前边的数字最小为 1
               for(int k=j; k>=1; --k)
                  dpI[i][j]+=dpI[i-1][k];
           }

           for(int k=j; k<10; ++k){//单调递减的数字中可以有0,但是第二位为0时,第一位不能为0
                 if(i==2 && k==0) continue;
              dpD[i][j]+=dpD[i-1][k];
           }
        }
   }
}

int main(){
   init();
   int n;
   while(cin>>n){
       long long sum=0;
       for(int j=1; j<=n; ++j){
         for(int i=0; i<10; ++i)
           sum+=dpI[j][i]+dpD[j][i];
         sum-=9;
       }
       cout<<sum<<endl;
   }
   return 0;
}
时间: 2024-11-03 22:35:10

ZZUOJ1196: 单调数的相关文章

POJ2084 catalan数

Game of Connections Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6323   Accepted: 3258 Description This is a small but ancient game. You are supposed to write down the numbers 1, 2, 3, . . . , 2n - 1, 2n consecutively in clockwise ord

Linux系统下的单调时间函数

欢迎转载,转载请注明出处:http://forever.blog.chinaunix.net 一.编写linux下应用程序的时候,有时候会用到高精度相对时间的概念,比如间隔100ms.那么应该使用哪个时间函数更准确呢?    1.time        该函数返回的是自1970年以来的秒数,显然精度不够,不能使用    2.gettimeofday        该函数返回的是自1970年以来的秒数和微秒数,精度显然是够了.我想有很多程序员也是用的这个函数来计算相对时间的,如果说系统时间因为nt

浅谈单调队列、单调栈_C 语言

初谈这个话题,相信许多人会有一种似有所悟,但又不敢确定的感觉.没错,这正是因为其中"单调"一词的存在,所谓单调是什么,学过函数的people都知道单调函数或者函数的单调性,直白一点说单调就是一直增或一直减.例如:1,3,5,9就是一个单调增数列,数列中不存在后一个数比前一个数小的现象.那么同样,在这里谈到的话题也有类似特点. 先说一下单调队列吧!      单调队列,就是一个符合单调性质的队列,它同时具有单调的性质以及队列的性质.他在编程中使用频率不高,但却占有至关重要的地位.它的作用

Facebook是怎么做到每秒索引数百万条记录的?

编者按:作者Pedro Eugênio Rocha 现任Facebook系统工程师,2016年毕业于巴西巴拉那州联邦大学信息学专业,研究兴趣包括数据库与存储系统,尤其是与分布式系统和大数据相关的数据库与存储系统.作者在文章中介绍了Cubrick:一种多维内存数据管理系统.Cubrick是由Facebook开发的新型分布式多维内存数据库管理系统,其目的在于解决大量数据资源并行运行所存在的问题.为达到交互式分析高度动态数据集这一目的,Cubrick运用一种用于管理柱形内存数据的新策略,这种策略允许在

揭秘网络秀场:护士转行做网络女主播 一年聚集数百万财富

沈曼曾是四川某医院的护士,拿着月均2000元的薪水.之后通过在线直播软件做主播,也就是唱歌和聊天,沈曼在一年内吸引了数名"土豪",由此聚集了数百万财富,甚至她出行的头等舱机票.星级酒店住宿也都由粉丝买单. ●沈曼的直播间停了670辆"豪车".通过在线实时直播,也就是唱歌和聊天,沈曼在一年内吸引了数名"土豪",由此聚集了数百万元财富.电脑截图 24小时,1440分钟,86400秒,盛宴都在进行. 男的,女的,甚至小孩,开始在视频中出现.美瞳.浓妆.

【选型1000强】爱数AnyShare荣获2016企业网盘技术创新奖

2016年1月19日,由中国软件网联合海比研究举办的"2016中国企业应用选型1000强"榜单揭幕."中国企业应用选型1000强"是中国软件与服务领域影响最大.历史最长.覆盖范围最广.最受业界关注.得到用户广泛认可的年度产品排行榜. 此次榜单涵盖基础软件.应用软件.行业软件.云计算.移动应用.信息安全6大类.共计160个细分门类的企业应用,近1000家企业和产品入围.一直以来,中国企业选型1000强榜单都是用户选择企业级应用产品.技术和合作伙伴的风向标,指导着企业用

Facebook是怎么做到每秒索引数百万条记录的?

编者按:作者Pedro Eugnio Rocha 现任Facebook系统工程师,2016年毕业于巴西巴拉那州联邦大学信息学专业,研究兴趣包括数据库与存储系统,尤其是与分布式系统和大数据相关的数据库与存储系统.作者在文章中介绍了Cubrick:一种多维内存数据管理系统.Cubrick是由Facebook开发的新型分布式多维内存数据库管理系统,其目的在于解决大量数据资源并行运行所存在的问题.为达到交互式分析高度动态数据集这一目的,Cubrick运用一种用于管理柱形内存数据的新策略,这种策略允许在数

NY214&amp;#160;单调递增子序列(二)

单调递增子序列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0 如:1 9 10 5 11 2 13的最长单调递增子序列是1 9 10 11 13,长度为5. 输入 有多组测试数据(<=7) 每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的下一行里有n个整数,表示数列中的所有元素.每个整形数中间用空格间隔开(0 数据以EOF结束 . 输入数据保证合法(全为int型整数)! 输出 对于每组测试数据输出整

[LeetCode] Monotone Increasing Digits 单调递增数字

Given a non-negative integer N, find the largest number that is less than or equal to N with monotone increasing digits. (Recall that an integer has monotone increasing digits if and only if each pair of adjacent digits x and y satisfy x <= y.)   Exa