1. 程式人生 > >Codeforces Gym 100623J Problem J. Just Too Lucky 數位DP

Codeforces Gym 100623J Problem J. Just Too Lucky 數位DP

題解:數位DP經典題目,先暴力一遍,把可能出現的各位數字和都跑一遍,然後就是經典數位DP了,記憶化搜尋寫完的,詳見程式碼

Code:

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

long long n,dp[15][110][110];
int dight[15];

long long dfs(int len,int sum,int mod,int div,bool flag)
{
    if(len==0)
        return (sum==div)&&(mod==0);
    if(dp[len][sum][mod]!=-1&&flag==0)
        return dp[len][sum][mod];
    long long s=0;
    int u=flag?dight[len]:9;
    for(int i=0;i<=u;i++)
        s+=dfs(len-1,sum+i,(mod*10+i)%div,div,flag&&i==u);
    return flag?s:dp[len][sum][mod]=s;
}

long long solve(long long n)
{
    long long ans=0;
    int cur=0;
    memset(dp,-1,sizeof(dp));
    while(n)
    {
        dight[++cur]=n%10;
        n/=10;
    }
    for(int i=1;i<=cur*9;i++)
    {
        memset(dp,-1,sizeof(dp));
        ans+=dfs(cur,0,0,i,1);
    }
    return ans;
}

int main()
{
    freopen("just.in","r",stdin);
    freopen("just.out","w",stdout);
    while(cin>>n)
        cout<<solve(n)<<endl;
    return 0;
}


相關推薦

Codeforces Gym 100623J Problem J. Just Too Lucky 數位DP

題解:數位DP經典題目,先暴力一遍,把可能出現的各位數字和都跑一遍,然後就是經典數位DP了,記憶化搜尋寫完的,詳見程式碼 Code: #include <iostream> #include <cstdio> #include <cst

Just Too Lucky-數位DP

Since mass transit (公共交通)was invented, people who buy tickets look for lucky ticket numbers. There are many notions of lucky tickets,

Gym 100623J Just To Lucky(數位dp)

題意:1-n中有多少個數滿足本身能被各個數位的和整除;思路:n是10的12次方,很快就能想到是數位dp,當時沒板子,忘了數位dp怎麼敲了,後來看了下題解,還是挺裸的數位dp。dp[pos][sum][remain][mod];pos:代表當前數位sum:各數位之和remain

Just Too Lucky(一個數能被其各位的和整除)

題目連結https://vjudge.net/problem/Gym-100623J 題目大意:求1-n中,有多少個數,可以被其各位的和整除 n<=1e12   設x為數位和 x的範圍為[1,108] 也就是說要讓一個數n mod x = 0 &nbs

The 2018 ACM-ICPC上海大都會賽 J Beautiful Numbers (數位DP

mes div spa ems urn 余數 limit style 狀態 題意:求小於等於N且能被自己所有位上數之和整除的數的個數。 分析:裸的數位dp。用一個三位數組dp[i][j][k]記錄:第i位,之前數位之和為j,對某個mod余數為k的狀態下滿足條件的個數。這裏m

大都會 J Beautiful Numbers (數位dp數位和問題)

題目描述 NIBGNAUK is an odd boy and his taste is strange as well. It seems to him that a positive integer number is beautiful if and only i

Codeforces Gym 101174 J Risky Lottery 計算方法 逼近求值 dfs

ref rem sin else 情況下 fab cnblogs clu fine #include<stdio.h> #include <math.h> using namespace std; int fac[10],a[10]; #defi

Codeforces Gym 100548H - The Problem to Make You Happy 2014 ACM-ICPC 西安站

Problem H. The Problem to Make You Happy Input file: standard input Output file: standard output Time limit: 1 seconds Memory lim

Codeforces Round#413 Problem A - C

false font vector for循環 type als 不存在 pac 鏈接 [寫在前面感(亂)嘆(七)人(八)生(糟)的話]   本想借此機會一口氣玩到藍名,結果,A題寫炸(少判了一種情況),C題寫炸(辜負了我5分鐘狂敲出來的線段樹),結果又掉Rating..

Problem J: 求個最大值

main oid 整數 stream con spa ++ gre 其中 Problem J: 求個最大值 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 871 Solved: 663[Submit][Status][We

Gym 100418J Lucky tickets(數位dp

space mat comm sizeof ++ memset 狀態 out rac 題意:給定一個n。求區間[1, n]之間的全部的a的個數。a滿足: a能整除 把a表示自身二進制以後1的個數 思路:題意非常繞.... 數位dp,對於全部可能的1的個數我們

(最短路)第七屆福建省大學生程序設計競賽 Problem J- X

main tails return ros code and rect list def Problem Description X is a fully prosperous country, especially known for its complicated

codeforces gym 101164 K Cutting 字符串hash

暴力 print pre clas 暴力枚舉 cut ash pac lin 題意:給你兩個字符串a,b,不區分大小寫,將b分成三段,重新拼接,問是否能得到A; 思路:暴力枚舉兩個斷點,然後check的時候需要字符串hash,O(1)復雜度N*N; 題目鏈接:傳送門

Codeforces Gym 100269 Dwarf Tower (最短路)

pair iostream printf sync part ret scribe first pan 題目連接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playin

2017南寧網絡賽 Problem J Minimum Distance in a Star Graph ( 模擬 )

題意 個數字 include spl 方向 元素交換 isp scan mic 題意 : 亂七八糟說了一大堆,實際上就是問你從一個序列到另個序列最少經過多少步的變化,每一次變化只能取序列的任意一個元素去和首元素互換 分析 : 由於只能和第一個元素去互換這種操作,所以沒啥

http://codeforces.com/problemset/problem/768/B B. Code For 1

scan 通過 class 題目 num continue lower scn printf 1 #include <bits/stdc++.h> 2 using namespace std; 3 long long bit[70]; 4 void

codeforces Gym 101063 C

blank ostream con ans pac sin %d sca mes 二進制轉十進制 然後按位比較 傳送門 http://codeforces.com/gym/101063 #include <cstdio> #include <cma

Codeforces Gym 101194G Pandaria (2016 ACM-ICPC EC-Final G題, 並查集 + 線段樹合並)

body end highlight 題目 efi 預處理 ++i sin const 題目鏈接 2016 ACM-ICPC EC-Final Problem G 題意 給定一個無向圖。每個點有一種顏色。    現在給定$q$個詢問,每次詢問$x$和$w$,求所有能

codeforces gym 100548f

打表 需要 turn name pri 不同 也有 info include 題目如圖 題意是說給n個花,m種顏色,要求相鄰花顏色不能相同,總共有k種不同的顏色。   剛開始想的是從m種顏色裏選k種,然後第一朵花有k種選法,後面的都是k-1種,這樣就是C(m,k) * (

Problem J: 搜索基礎之紅與黑

php 9.1 sca pro scan != ask 超過 bmi Problem J: 搜索基礎之紅與黑 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 170 Solved: 100[Submit][Status][W