bzoj3679 數字之積 數字dp

2021-07-04 04:50:13 字數 737 閱讀 4212

裸的數字dp,豪爺講課的時候秒掉了,但是後來發現會mle,於是我們做這麼一件事,考慮數字的乘積一定是2、3、5、7的多少次冪之積,於是我們對於乙個n,把可行的數字拿出來排個序編個號就好了,表示不會用新學的這種數字dp處理前導0,果斷滾回原來的dp。

#include#include#include#include#include#include#includeusing namespace std;

mapp;

long long f[20][10][6000];

long long l,r;

int dight[20];

int a[6000];

int n,num,aa,bb,cc,dd,tot;

bool check(int a,int b,int c,int d)

long long calc(long long x)

for (int i=1;i<=num/2;i++) swap(dight[i],dight[num-i+1]);

for (int i=1;in) break;

ans+=f[num-i+1][j][q];

}sum*=dight[i];

if (sum>n || sum==0) break;

} return ans;

}int cal(int a,int b,int c,int d)

int main()

BZOJ 3679 數字之積 數字DP

description 乙個數x各個數字上的數之積記為f x 不含前導零 求 l,r 中滿足0 這題資料非常非常水 我的錯誤 幾乎一半資料範圍都過不了都ac了 好在fyc大神發現我的 錯了,看了半天,終於明白了。有這幾個錯誤 1 用log來比較數的大小。這樣是十分不精確的,平常不推薦使用。2 陣列開...

bzoj 3679 數字之積 數字dp

乙個數x各個數字上的數之積記為f x 不含前導零 求 l,r 中滿足0input 第一行乙個數n 第二行兩個數l r output 乙個數,即滿足條件的數的個數 sample input 5 19 22 sample output hint 100 0很容易想到數字dp,但是因為n太大,無法直接做。...

BZOJ 3679 數字之積 數字DP

還是記憶化搜尋就行,但是要用 map 記憶化。見 include include include define r register int define ll long long using namespace std namespace luitaryi ll n,l,r,num 19 len,...