第一轮 I

K-based Numbers
Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
Submit Status

Description
Let’s consider K-based numbers, containing exactly N digits. We define a number to be valid if its K-based notation doesn’t contain two successive zeros. For example:

    1010230 is a valid 7-digit number;
    1000198 is not a valid number;
    0001235 is not a 7-digit number, it is a 4-digit number. 

Given two numbers N and K, you are to calculate an amount of valid K based numbers, containing N digits.
You may assume that 2 ≤ K ≤ 10; N ≥ 2; N + K ≤ 18.

Input
The numbers N and K in decimal notation separated by the line break.

Output
The result in decimal notation.

Sample Input
input	output

2
10

90

/*************************************************************************
	> File Name: i.cpp
	> Author:yuan
	> Mail:
	> Created Time: 2014年11月09日 星期日 21时52分04秒
 ************************************************************************/

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
long long ans[2][20];
int n,k;
int main()
{
        cin>>n>>k;
        memset(ans,0,sizeof(ans));
        ans[0][1]=0;ans[1][1]=k-1;/*分别指定了长度为1,末尾数字为0的个数为0,不为的个数为k-1*/
        for(int i=2;i<=n;i++)
        {
            ans[0][i]=ans[1][i-1];/*不能出现连续的0,则长度为n末尾为0的个数等于长度为n-1末尾不为0的个数*/
            ans[1][i]=(k-1)*(ans[0][i-1]+ans[1][i-1]);/*长度为n,末尾数字不为0的个数:末尾数字可以是1—k-1中的任意一个
            倒数第二位可以为0,也可以不为0*/
        }
        cout<<ans[0][n]+ans[1][n]<<endl;
    return 0;
}

时间: 2024-10-28 03:31:13

第一轮 I的相关文章

2014年百度之星程序设计大赛 - 初赛(第一轮) hdu Grids (卡特兰数 大数除法取余 扩展gcd)

题目链接 分析:打表以后就能发现时卡特兰数, 但是有除法取余. f[i] = f[i-1]*(4*i - 2)/(i+1); 看了一下网上的题解,照着题解写了下面的代码,不过还是不明白,为什么用扩展gcd, 不是用逆元吗.. 网上还有别人的解释,没看懂,贴一下: (a / b) % m = ( a % (m*b)) / b 笔者注:鉴于ACM题目特别喜欢M=1000000007,为质数: 当gcd(b,m) = 1, 有性质: (a/b)%m = (a*b^-1)%m, 其中b^-1是b模m的逆

第一轮迭代团队贡献分分配

经过我们团队的讨论,第一轮迭代团队贡献的分配方案如下: 团队成员 最终得分 高孟烨 64 邓亚梅 39 陈少杰 62 金鑫 57 雷元勇 36 王迪 37 郑培蕾 55 第一轮迭代的成绩让我们都不是很满意,所以成败就看M2阶段了,小伙伴们加油啦~ 暂定转会的成员是邓亚梅,明天上课的时候最后确定.

ZJOI2017第一轮游记

ZJOI2017第一轮:2017.3.20---3.23 Day 0 有好多天没做作业了,感觉不错. 温州还是不错的,宾馆也很满意. 感觉明天会听不懂. Day1 第一节课的前半部分还能勉强听懂,后面和下午一脸懵逼. 第一节课是有XJ中学的周子鑫学长上的搜索题,下面是一点总结. part 1:折半搜索 比如说双向广搜之类的,主要是从起点和终点交替搜或者是同时搜,可以降低搜索复杂度. 如果答案容易合并,或者搜索的操作可逆,可以考虑折半搜索. 还有一个技巧,要算方案数时,将折半的两边都存入hash数

2014第六届华为编程大赛初赛第一轮

/*********************************************************************** 1.投票问题 输入若干候选人,以及投票,格式如下,输出(按输入候选人输入顺序)候选人以及得票,以及 无效票数. Input: addCandidate xx1 addCandidate xx2 addCandidate xx3 addCandidate xx4 addCandidate xx5 addCandidate xx6 vote xx2 vot

第一轮面试题汇总

1.描述下数据库中的事务--ACID各个的特点 原子性(Atomicity):事务中的操作要么全部成功要么全部失败. 一致性(Consistency):事务前后数据的完整性必须保持一致. 隔离性(Isolation):多个并发的事务之间是相互隔离的,互不干扰的. 持久性(Durability):事务提交后,数据是永久改变的. 2.什么是springboot?你们公司是用的哪个版本? SpringBoot是Spring推出用于解决传统框架配置文件冗余,装配组件繁杂的基于Maven的解决方案,旨在快

Microsoft Interview第一轮

上来随意交谈了一小会儿,开了点小玩笑,chat了一些关于他们recruter行程的话题,缓和了一下气氛. 进入正题,问了做的research的方向,我说是DLT,然后大概给他讲解了一下具体是什么, 跟平行计算很像,举了一个例子:矩阵乘法如何划分使并行效率最高.他表示理解.然后他又问我有没有过end to end的experience, front end back end那种, 我跟他简单介绍了一个简历上的social database设计的project,简单介绍了我们front end和ba

羊年在即,第一轮资源大放送!

新年新气象,现将平时积攒的开发资源献给大家,希望对于大家平时的工作或学习有所帮助,本人从事开发和架构多年,以后大家有什么问题都可以跟我交流,我也乐于给大家提供力所能及的帮助! 大家拿起手机扫一扫本人微信号吧,以后有更多优质资源送出,希望大家关注: 第一拨资源主要是jquery前端开发资源,附带可运行示例: 178图库jQuery相册代码:点击下载 2款基于jQuery实现的页面预加载动画特效源码:点击下载 360°三维视图jquery插件:点击下载 360音乐歌手切换jQuery选项卡:点击下载

面经:Bloomberg Internship第一轮

上来先问了一个系统设计的问题,一个front end, 一个back end. front end有很多UI,一个UI对10个多customers,back end有许多processor,或者processor有多个进程.线程.问应该怎么设计这个并行分布运算的系统,才能让独立的任务得到优化. 完全那这个系统设计没有办法,需要有相应的经验才能答这种题.不知道为什么new grad也要问系统设计 这其中问了一些父子进程.线程各自的优劣 第一个算法题是给个String,比如AABBBCCCDD,问怎

[算法第一轮复习] kruskal求最小生成树算法

最小生成树算法即MST,有kruskal,prim两种算法,这里主要介绍kruskal 什么是最小生成树? 对于一个图,保证其中每个点都可以连通的最小的花费 1.算法核心 贪心+并查集 2.算法实现过程 克鲁斯卡尔算法 假设 WN=(V,{E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有 n 棵树的一个森林.之后,从网的边集 E 中选取一条权值最小的边,若该

[算法第一轮复习] 最短路算法之dijkstra

1.算法描述 dijkstra,一种求单源正权图上的最短路的算法 主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止 Dijkstra算法思想为:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将 加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中.在加入的过程中,总保持从源