百度之星複賽題解

2021-08-07 02:53:45 字數 1830 閱讀 6524

problem description

眾所周知,度度熊非常喜歡數字。

它最近在學習小學算術,第一次發現這個世界上居然存在兩位數,三位數……甚至n位數!

但是這回的算術題可並不簡單,由於含有表示bomb的#號,度度熊稱之為 arithmetic of bomb。

bomb number中的bomb,也就是#號,會展開一些數字,這會導致最終展開的數字超出了度度熊所能理解的範疇。比如」(1)#(3)」表示」1」出現了3次,將會被展開為」111」,

同理,」(12)#(2)4(2)#(3)」將會被展開為」12124222」。

為了方便理解,下面給出了bomb number的bnf表示。

:= | := | '(' ')' '#' '(' ')'

:= | := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'

:= '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'

請將bomb number中所有的#號展開,由於數字可能很長,結果對 1 000 000 007 取模。

input

第一行為t,表示輸入資料組數。

每組資料報含乙個bomb expression。

output

對每組資料輸出表示式的結果,結果對 1 000 000 007 取模。

sample input

4

1(1)#(3)

(12)#(2)4(2)#(3)

(12)#(5)

sample output

1

11112124222

212121205

簡單的模擬題

#include#include#include#include#include#include#include#include#include#include#include#include//#define mem(dp,a) memset(dp,a,sizeof(dp))

//#define fo(i,n) for(int i=0;i

//#define inf 0x3f3f3f3f

#define fread() freopen("data.txt","r",stdin)

#define fwrite() freopen("out.out","w",stdout)

using namespace std;

typedef long long ll;

const ll mod = 1000000007;

int dir[4][2] = , , , };

string s;

string re;

string st,tn;

int t;

int main()

;ll b[n]=;

ll re[n];

int t,n;

int main()

ll &now = dp[pos][pre][up][t];

if (!limit && now != -1)

ll ret = 0;

int d = limit ? str[pos] - '0' : 9;

for (int i=0; i<=d; ++i)

}else

else}}

if (!limit)

return ret;

}int main()

return 0;

}

2017 百度之星複賽題解 01 03 05

01 有個易錯點,我卡了好久,就是 1 012 1 答案是1012,我剛開始把012的前導0去掉了。03 原題 05 數字dp,記憶化搜尋 dp p q limit ceng 表示前一位是 p,前面處於遞增 遞減 狀態q,當前位上限是多少limit,還有多少位ceng 根據不同情況遞迴即可,可以先不...

2016 百度之星 複賽 拍照

小明在旅遊的路上看到了一條美麗的河,河上有許多船隻,有的船隻向左航行,有的船隻向右航行。小明希望拍下這一美麗的風景,並且把盡可能多的船隻都完整地拍到一張 中。小明位於河的邊上,並且可以在河邊的任意位置進行拍照,照相機的視野恰好為90度角,只能以垂直於河邊的方向進行拍照。河上的船隻全都可看作是平行於河...

2014百度之星複賽解題報告複賽 Race

race 時間限制 10s 記憶體限制 64mb 問題描述 度度熊最近參加了一場勁跑比賽,但是這個勁跑比賽的規則比較特殊。比賽方預先在地上畫了一些橫線和豎線 可以認為這些線為無限長的直線 要求選手從指定的位置出發,在最短時間內按照規定的順序經過所有的直線 只要到達直線上的任意一點即為經過 為了幫助度...