Nescaf 2 月之謎 題解

2022-07-17 07:54:13 字數 1934 閱讀 4687

月之謎 (mystery.pas/c/cpp)

【題目描述】

打敗了 lord lsp 之後,由於 lqr 是乙個心地善良的女孩子,她想淨化 lord lsp 黑化的心,使他變回到原來那個天然呆的 lsp……

具體地來說是這樣的,定義月之數為能夠被其十進位制表示下各個數字的和整除的數。

給定整數 l,r,你需要計算出區間[l, r]中有多少個月之數。

lqr 發覺這不是數學競賽能夠解決的問題,於是她又找到了你……所以說你需要幫助她解決這個問題。

【輸入格式】

輸入檔案包含多個測試資料。

每組測試資料佔一行,含有兩個整數 l 和 r。

輸入檔案以 eof 結束。

【輸出格式】

對於每組測試資料,在單獨的一行內輸出結果。

【樣例輸入】

1 100

101 200

【樣例輸出】

【資料範圍與約定】

對於 20% 的資料,1≤l,r≤1000。

對於 100% 的資料,1≤l,r≤2 31 -1。

每個輸入檔案的測試資料不超過 3000 組。

——————————————我是分割線————————————————————

好題,數字統計dp

這就是著名的數字統計dp,首先把問題轉化為calc(1,r)-calc(1,l-1)

一般解題思路是:先dp預處理、再從高到低按位填數

一旦填了乙個比上限小的數字,就可以立即通過dp預處理出的值累加答案

f[模][剩餘數字數目][剩餘數字的和][剩餘位的模]=合法方案數

f[s][i][j][k]=∑(f[s][i-1][j-r][(k-pwr[i-1]*r)%s], 0≤r≤9)

邊界條件:f[s][0][0][0]=1

【**】

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11

#define maxn 1000001

12#define f(i,j,k) for(int i=j;i<=k;i++)

13#define m(a,b) memset(a,b,sizeof(a))

14#define ff(i,j,k) for(int i=j;i>=k;i--)

15#define inf 0x7fffffff

16using

namespace

std;

17int

read()

20while(ch>='

0'&&ch<='9')

21return x*f;22}

23int

n,m;

24int f[82][10][82][82],pwr[82][10

];;25

intsum,l,r;

26int num[10

];27 inline int modabs (int a, int

mod)

2831

int run(int p,int sum,int mod,int s,bool

e)32

41else

4248

return

res;49}

50}51int fcount(int

t)52

60int res=0

;61 f(i,1,81) res+=run(maxx-1,0,0,i,true

);62

return

res;63}

64int

main()

6581}82

while(cin>>l>>r)

8386

return0;

87 }

nescafé2 月之謎

2月讀書活動之《如果高效學習》

前言 又是乙個無眠夜,在加班中,插上耳機,開啟 靜靜地來iteye,看看這本 如果高效學習 周圍的圈子也有很多 異常聰明 人,懷著好奇來看看這本書。正文 下面內容開始的是一些讀書筆記 整體學習和機械記憶的差異 比如公式,有的人知道公式中每乙個符號的含義,用在什麼地方,了解規則。因為我們大腦是通過數十...

2月2號總結

這個周天真的是就這麼浪費過去了,可能是上週太累了,週六比賽結束後倒頭就睡,然後就到了第二天10點,起床洗漱好就開始洗衣服,洗頭髮,整來整去就到了吃中午飯的時間。下午到了實驗室,收到一封郵件,然後就開始為 的備案開始各種忙,最後去東門寄了個郵件,就和隊友去超市買了這週的早餐。這樣一天就過去了。今天就做...

2023年2月28 3月2日訓練總結

在宿舍最大的敵人是網速。啥都打不開的絕望感 英語題還是沒適應,大多都得靠翻譯一點點的往下做,今天的一道題完全就是因為題目沒讀懂,用的知識是剛學的,得盡快把英語補起來,不能因為這些東西吃虧。近期的學習任務還是在stl上,主要是簡化自己的 二分又回去看了一下,有點忘記了,感覺還挺重要的,最近沒學什麼乾貨...