zoukankan      html  css  js  c++  java
  • Timus 1009. Kbased Numbers

    View Code
     1 /*
     2 dp[i][0] i位数字的数首位为0 
     3 dp[i][1] i位数字的数首位为1 
     4 
     5 */ 
     6 #include<stdio.h>
     7 int main()
     8 {
     9     int n,k;
    10     int dp[20][2];
    11     while(~scanf("%d%d",&n,&k))
    12     {
    13         dp[1][0]=1; //只有一个数字的数首位为0那就只有0一个数 
    14         dp[1][1]=k-1;//只有一个数字的数首位不为0 ,对于k进制就只有k-1个数,除掉0嘛 
    15         for(int i=2;i<=16;i++)
    16         {
    17             dp[i][0]=dp[i-1][1];//i位数的数且首位为0,等于i-1位数的数首位为1的数,
    18             dp[i][1]=dp[i-1][0]*(k-1)+dp[i-1][1]*(k-1);//i位数的数且首位为1(即非0),等于i-1位首位为0数的数乘以首位可以放k-1个数(非0)和首位为 非0乘以k-1 
    19         }
    20         printf("%d\n",dp[n][1]);
    21     }
    22 }

    1009. K-based Numbers

    Time Limit: 1.0 second
    Memory Limit: 16 MB
    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

    inputoutput
    2
    10
    
    90
    
  • 相关阅读:
    学习进度(十一)
    学习进度(十)
    人月神话阅读笔记1
    SQL SUM() 函数
    SQL GROUP BY 语句
    SQL HAVING 子句
    SQL UCASE() 函数
    SQL LCASE() 函数
    SQL MID() 函数
    SQL LEN() 函数
  • 原文地址:https://www.cnblogs.com/1114250779boke/p/2706279.html
Copyright © 2011-2022 走看看