時間限制: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 ...