zoukankan      html  css  js  c++  java
  • Beautiful numbers CodeForces

    #include<string>
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <cstdio>
    #include <iostream>
    using namespace std;
    typedef long long ll;
    const int maxn=2550;
    //原数是不是整除非零位,也就是整除最小公倍数,1-9所有最小公倍数为2520
    int a[20],mp[maxn];//1-9任意最小公倍数是48个
    ll d[20][maxn][50];//第几位,取模后为sum,最小公倍数为lcm的个数
    ll n,m;
    void init()
    {
        int ans=0;
        for(int i=1; i<=2520; i++)
            if(2520%i==0)
            {
                mp[i]=ans;
                ans++;
            }
    }
    ll work(ll x,ll y)
    {
        if(x==0||y==0)
            return x+y;
        else
            return x*y/__gcd(x,y);
    }
    ll dfs(int pos,ll sum,int lcm,bool limit)
    {
        if(pos==-1)
        {
            return (sum%lcm)==0;
        }
        if(!limit&&d[pos][sum][mp[lcm]]!=-1)
            return d[pos][sum][mp[lcm]];
        int u=limit?a[pos]:9;
        ll temp=0;
        for(int i=0; i<=u; i++)
        {
            temp+=dfs(pos-1,(sum*10+i)%2520,work(lcm,i),limit&&a[pos]==i);
        }
        if(!limit)
            d[pos][sum][mp[lcm]]=temp;
        return temp;
    }
    ll solve(ll x)
    {
        int pos=0;
        while(x>0)
        {
            a[pos++]=int(x%10);
            x/=10;
        }
        return dfs(pos-1,0,1,true);//必须为1,否则sum%lcm报错
    }
    int main()
    {
        memset(d,-1,sizeof d);
        init();
        int t;
        cin>>t;
        while(t--)
        {
            cin>>n>>m;
            cout<<(solve(m)-solve(n-1))<<endl;
        }
        return 0;
    }
  • 相关阅读:
    scratch资源
    如何把scratch转成一个swf文件或者exe执行文件
    perl的匿名引用
    perl的内置函数scalar
    perl内置特殊变量查询
    Win7中安装Windows PowerShell 3.0
    man-pages项目包含文档的说明
    编译器思维之结合律
    Android中利用jsoup解析html页面
    MVP+Retrofit+RxJava
  • 原文地址:https://www.cnblogs.com/zhangzhenjun/p/12448133.html
Copyright © 2011-2022 走看看