hiho 1033 交錯和 數字DP

2021-07-11 21:47:06 字數 1637 閱讀 7801

時間限制:10000ms 

單點時限:1000ms 

記憶體限制:256mb

給定乙個數 x,設它十進位制展從高位到低位上的數字依次是 a

0, a

1, ..., a

n - 1,定義交錯和函式:

f(x) = a

0 - a

1 + a

2 - ... + ( - 1)n - 1

an - 1

例如:f(3214567) = 3 - 2 + 1 - 4 + 5 - 6 + 7 = 4

給定 l, r, k,求在 [l, r] 區間中,所有 f(x) = k 的 x 的和,即:

輸入資料僅一行包含三個整數,l, r, k(0 ≤ l ≤ r ≤ 1018, |k| ≤ 100)。

輸出一行乙個整數表示結果,考慮到答案可能很大,輸出結果模 109 + 7。

對於樣例 ,滿足條件的數有 110 和 121,所以結果是 231 = 110 + 121。

input

4344 3214567 3

output

611668829

input

404491953 1587197241 1

output

323937411

input

60296763086567224 193422344885593844 10

output

608746132

input

100 121 -1

output

120

樣例輸入

100 121 0
樣例輸出

231

#include #include 

#include

using

namespace

std;

typedef

long

long

ll;const

int mod = (int) 1e9 + 7

;int a[20

];ll

base[20

];int

k, len;

struct

p} dp[

20][320][3

];p dfs(

int cur, int st, int pos, bool

limit)

else

p p = dfs(cur-1, new_st, new_pos, limit&&i==end);

ret.num = (ret.num + p.num) %mod;

ret.sum = (ret.sum + (p.num * i) % mod * base[cur] % mod + p.sum) %mod;

}if(!limit && pos!=0) dp[cur][st][pos] =ret;

return

ret;

}int

f(ll x)

return dfs(len, 160, 0, 1

).sum;

}void

init()

}int

main ()

hiho 矩形判斷

時間限制 1000ms 單點時限 1000ms 記憶體限制 256mb 給出平面上4條線段,判斷這4條線段是否恰好圍成乙個面積大於0的矩形。輸入第一行是乙個整數t 1 t 100 代表測試資料的數量。每組資料報含4行,每行包含4個整數x1,y1,x2,y2 0 x1,y1,x2,y2 100000 ...

hiho兄弟的字典樹之爭(hiho1014)

小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一本詞典,於是小hi就向小ho提出了那個經典的問題 小ho,你能不能對於每乙個我給出的字串,都在這個詞典裡面找到以這個字串開頭的所有單詞呢?身經百戰的小...

1033 舊鍵盤打字

舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字 以及壞掉的那些鍵,打出的結果文字會是怎樣?輸入格式 輸入在2行中分別給出壞掉的那些鍵 以及應該輸入的文字。其中對應英文本母的壞鍵以大寫給出 每段文字是不超過105個字元的串。可用的字元包括字母 a z,a ...