zoukankan      html  css  js  c++  java
  • hdu 4389 X mod f(x) 数位DP

    思路:

    每次枚举数字和也就是取模的f(x),这样方便计算。

    其他就是基本的数位Dp了。

    代码如下:

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 #include<iomanip>
     5 #include<cmath>
     6 #include<cstring>
     7 #include<vector>
     8 #define ll __int64
     9 #define pi acos(-1.0)
    10 #define MAX 50000
    11 using namespace std;
    12 int bit[10],dp[10][90][90][90];
    13 int dfs(int pos,int num,int mod,int sum,bool f)
    14 {
    15     if(pos==-1) return mod==sum&&num==0;
    16     if(!f&&dp[pos][mod][num][sum]!=-1) return dp[pos][mod][num][sum];
    17     int ans=0;
    18     int e=f?bit[pos]:9;
    19     for(int i=0;i<=e;i++){
    20         ans+=dfs(pos-1,(10*num+i)%mod,mod,sum+i,f&&i==bit[pos]);
    21     }
    22     if(!f) dp[pos][mod][num][sum]=ans;
    23     return ans;
    24 }
    25 int cal(int n)
    26 {
    27     int m=0;
    28     while(n){
    29         bit[m++]=n%10;
    30         n/=10;
    31     }
    32     int ans=0;
    33     for(int i=1;i<=9*m;i++)
    34         ans+=dfs(m-1,0,i,0,1);
    35     return ans;
    36 }
    37 int main(){
    38     int t,n,m,ca=0;
    39     memset(dp,-1,sizeof(dp));
    40     scanf("%d",&t);
    41     while(t--){
    42         scanf("%d%d",&n,&m);
    43         printf("Case %d: %d
    ",++ca,cal(m)-cal(n-1));
    44     }
    45     return 0;
    46 }
    View Code
  • 相关阅读:
    级数问题
    放苹果
    _WIN32_WINNT not defined错误 解决办法
    日期大写
    金额大写转换
    选择屏幕字段不允许直接输入…
    OO面向对象ALV小测试
    判断是否有人在操作某张表,并获取…
    屏幕中设置焦点
    前导零
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3309132.html
Copyright © 2011-2022 走看看