zoukankan      html  css  js  c++  java
  • BZOJ 1799 同类分布

    一开始没想出来。。一看题解

    我艹直接枚举数位的和啊。。。。。怪不得给50s。

    还是太蠢。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    long long l,r,bit[20],ret=0,dp[20][170][170],vis[20][170][170],tot=0;
    void get_bit(long long x)
    {
        ret=0;
        while (x) {bit[++ret]=x%10;x/=10;}
    }
    long long dfs(long long pos,long long ret1,long long ret2,bool flag,long long mod)
    {
        if (!pos) return ((ret1==mod) && (!ret2));
        if ((!flag) && (vis[pos][ret1][ret2]==tot)) return dp[pos][ret1][ret2];
        long long ans=0,up=flag?bit[pos]:9;
        for (long long i=0;i<=up;i++)
            ans+=dfs(pos-1,ret1+i,(ret2*10+i)%mod,flag&&(i==bit[pos]),mod);
        if (!flag) dp[pos][ret1][ret2]=ans,vis[pos][ret1][ret2]=tot;
        return ans;
    }
    long long work(long long x)
    {
        get_bit(x);
        long long ans=0;
        for (long long i=1;i<=ret*9;i++)
        {
            tot++;
            ans+=dfs(ret,0,0,1,i);
        }
        return ans;
    }
    int main()
    {
        scanf("%lld%lld",&l,&r);
        printf("%lld
    ",work(r)-work(l-1));
        return 0;    
    }
  • 相关阅读:
    MongoDB 基础API使用
    MongoDB -- JAVA基本API操作
    Docker数据管理
    Docker容器的简单使用
    Docker
    Centos 7.3 镜像制作
    Fuel部署OpenStack
    Fuel
    Ceph添加、删除osd及故障硬盘更换
    ceph常用命令
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/6240428.html
Copyright © 2011-2022 走看看