• G


     1 #include<stdio.h>
     2 #include<string.h>
     3 using namespace std;
     4 typedef long long ll;
     5 
     6 int a[20];
     7 int dp[20][15][3];
     8 
     9 //pos:当前位置
    10 //mod:余数
    11 //have :0:前一位不是1 1:前一位是1 2:有13  
    12 ll dfs(int pos,int mod,int have,bool limit){
    13     if(pos==-1) return mod == 0 && have == 2;
    14     if(!limit && dp[pos][mod][have] != -1) 
    15         return dp[pos][mod][have];//没有上限并且已被访问过
    16     int up = limit?a[pos]:9;
    17     ll ans = 0,i;
    18     for(i = 0;i <= up;i++){
    19        int modx = (mod*10+i)%13;
    20        int havex = have;
    21        if(have == 0 && i==1) havex=1;
    22        if(have == 1 && i!=1) havex=0;
    23        if(have == 1 && i == 3) havex=2;
    24        ans += dfs(pos-1, modx, havex, limit && i == a[pos]);
    25     }
    26     if(!limit) dp[pos][mod][have] = ans;
    27     return ans;
    28 }
    29 
    30 ll solve(ll x){
    31     int pos=0;
    32     while(x){
    33         a[pos++]=x%10;
    34         x/=10;
    35     }
    36     return dfs(pos-1,0,0,true);
    37 }
    38 int main(){
    39     ll n;
    40     memset(dp,-1,sizeof(dp));
    41     while(scanf("%lld",&n)!=EOF){
    42         ll ans = solve(n);
    43         printf("%lld
    ",ans;
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    Bye sent_keys
    快速获取Jenkins上build
    快速搞定selenium grid分布式
    python 图形界面开发
    [分享] 自动化测试与持续集成方案-- UI 检查
    hua ge ju hao
    暴力 C++
    简单排序(java)
    记codeforces两题
    hdu 1874, dijkstra
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/9126182.html
Copyright © 2020-2023  润新知