Xét văn phạm biểu thức số học gồm phép cộng, trừ, nhân, dấu ngoặc và dấu trừ đơn ngôi (unary minus), với các số nguyên không âm có thể rất lớn (tới 100 chữ số):
E→T ((+∣−) T)∗ T→F (∗ F)∗ F→− F ∣ num ∣ ( E )
Hãy cài đặt bộ phân tích cú pháp đệ quy xuống cho văn phạm trên để tính giá trị chính xác (dạng số nguyên lớn, không giới hạn độ lớn) của biểu thức, sau đó in ra giá trị đó theo modulo p=109+7, dưới dạng số nguyên không âm trong khoảng [0,p−1] (nếu giá trị thật âm, kết quả phải được quy về không âm theo phép chia lấy dư đúng nghĩa toán học).
Ví dụ: với E= 2-10, giá trị thật là −8, theo modulo 109+7 là 999999999.
Một dòng chứa biểu thức E (1≤∣E∣≤2000), không có khoảng trắng, gồm các chữ số 0-9 (số có thể lên tới 100 chữ số), các ký tự + - * ( ), được đảm bảo hợp lệ cú pháp theo văn phạm trên.
In ra một số nguyên duy nhất trong khoảng [0,109+6] — giá trị biểu thức modulo 109+7.
Ví dụ:
Đầu vào:
5
Đầu ra:
5
Đầu vào:
2-10
Đầu ra:
999999999
Đang tải editor...