zoukankan      html  css  js  c++  java
  • ARC075 F.Mirrored

    题目大意:给定D,询问有多少个数,它的翻转减去它本身等于D

    题解做法很无脑,利用的是2^(L/2)的dfs,妥妥超时

    于是找到了一种神奇的做法。

    #include <iostream>
    using namespace std;
    typedef long long ll;
    
    ll D;
    
    ll hoge(ll A,ll t,int first) {
        if(t==0) return A==0;
        int v=(A%10+10)%10;
        ll ret=0;
        ret+=(10-v-first)*hoge((A-t*v)/10,t/100,0);
        ret+=(v-first)*hoge((A+(10-v)*t)/10,t/100,0);
        return ret;
    }
    
    void solve() {
        int i,j,k,l,r,x,y; string s;
        
        cin>>D;
        if(D%9) { cout<<0<<endl; return; }
        D/=9;
        ll ret=0;
        ll p10=10;
        for(i=2;i<=18;i++) {
            p10*=10;
            ll tot=(i%2)?10:1;
            ret += tot*hoge(D,p10/10/9,1);
        }
        cout<<ret<<endl;
        
    }
    
    int main() {
        solve();
    }
  • 相关阅读:
    请求headers处理
    requests模块
    urllib3
    urllib
    百度AI搜索引擎
    CSS层叠样式表--使用
    学习requests_html
    聚合新闻头条
    爬虫工程师的月薪如何?
    Linux日志系统
  • 原文地址:https://www.cnblogs.com/Saurus/p/7061325.html
Copyright © 2011-2022 走看看