zoukankan      html  css  js  c++  java
  • URAL 1012 K-based Numbers. Version 2(DP+高精度)

    题目链接

    题意 :与1009一样,不过这个题的数据范围变大。

    思路:因为数据范围变大,所以要用大数模拟,用java也行,大数模拟也没什么不过变成二维再做就行了呗。当然也可以先把所有的都进行打表,不过要用三维了就 。

     1 //URAL 1012
     2 #include <stdio.h>
     3 #include <string.h>
     4 #include <iostream>
     5 
     6 using namespace std ;
     7 
     8 int a[185];
     9 int dp[185][201] ;
    10 
    11 int main()
    12 {
    13     int n, k ;
    14     scanf("%d%d",&n,&k) ;
    15     memset(dp,0,sizeof(dp)) ;
    16     dp[1][200] = k-1 ;
    17     dp[2][200] = k*(k-1) ;
    18     for(int i = 3 ; i <= n ; i++)
    19     {
    20         memset(a,0,sizeof(a)) ;
    21         for(int j = 200 ; j >= 0 ; j--)
    22             a[j] = dp[i-1][j]+dp[i-2][j] ;
    23         for(int j = 200 ; j >= 0 ; j--)
    24         {
    25             if(a[j] > 9)
    26             {
    27                 a[j-1] += a[j]/10 ;
    28                 a[j] = a[j]%10 ;
    29             }
    30         }
    31         for(int j = 200 ; j >= 0 ; j--)
    32             dp[i][j] = a[j]*(k-1) ;
    33         for(int j = 200 ; j >= 0 ; j--)
    34         {
    35             if(dp[i][j] > 9)
    36             {
    37                 dp[i][j-1] += dp[i][j]/10 ;
    38                 dp[i][j] %= 10 ;
    39             }
    40         }
    41     }
    42     int i = 0 ;
    43     while(dp[n][i] == 0) i++ ;
    44     for( ; i <= 200 ; i++)
    45         printf("%d",dp[n][i]) ;
    46     printf("
    ") ;
    47     return 0 ;
    48 
    49 }
    View Code
  • 相关阅读:
    p1297
    p2023
    p1612
    逆元总结
    p1652
    考试总结10-08
    p1459
    p1821
    p1863
    p1884
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3664046.html
Copyright © 2011-2022 走看看