F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

Add or Multiply 2

Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 547    Accepted Submission(s): 117


Problem Description
前两段和第二题相同,但你不需要阅读第二题就可以完成这个题目。

你有一个数字 $x$ 和若干个操作,每个操作是 $+a_i$ 或者乘 $\times a_i$ 中的一种。你可以重新排列这些操作的顺序,然后对数字 $x$ 执行这些操作。

比如说三个操作是 $+a_1, +a_2, \times a_3$。如果按顺序执行这三个操作,那么得到的结果是 $((x+a_1)+a_2) \times a_3$。如果排列成 $+a_2, \times a_3, +a_1$,那么得到的结果是 $((x+a_2) \times a_3)+a_1$。

令 $P=10^9+7$。给定数字 $x$ 和 $n$ 个操作,想知道我们将这些操作重新排列之后,得到的结果对 $P$ 取余之后得到最小值是多少。
 

Input
本题有多组测试数据。

第一行一个整数 $T(1 \leq T \leq 1000)$ 表示数据组数。

对于每组数据,第一行两个整数 $n, x(1\leq n\leq 10, 0\leq x \le P)$。接下来 $n$ 行,每行包含一个运算符和数字 $a_i(0\leq x \le P)$,数字和运算符之间用空格隔开。

在测试数据中,保证 $n=10$,$x, a_i$ 在 $[0, P-1]$ 之间独立均匀随机,运算符在`+, *` 这两种里面随机。
 

Output
对于每组数据输出一行,表示答案。
 

Sample Input
1 10 671872738 * 683201291 * 250712304 + 559804065 + 329491176 + 948072486 + 821736719 + 67290733 + 947904529 + 962738511 * 712203548
 

Sample Output
7712
 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2024 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.000000(s) query 1, Server time : 2024-05-21 16:12:27, Gzip enabled