FEAST - Feast Coins
Last feast the young princess received way too many coins. Since she is very young, she doesn't know the value of each coin, if you give her a coin with the value 5 or a coin with the value 1, she will consider them both as just 1 coin, regardless of the value.
However, she can notice that the coin with value 5 doesn't look the same as the coin with value 1, and she will be happy if she has the same number of coins of each value. Otherwise, she will not be happy.
She has a lot of coins of different values, and she needs some subset of these coins such that the sum of their values should be exactly S, and the number of coins of each value in this subset should be the same. Can you help her to count the number of different ways to do this?
Input
Your program will be tested on one or more test cases. The first line of the input will be a single integer T (1 ≤ T ≤ 100) representing the number of test cases. Followed by T test cases. Each test case starts with a line containing two integers separated by a single space S and N (1 ≤ S ≤ 5,000, 1 ≤ N ≤ 50) representing the total required sum and the number of different values of coins, respectively. Followed by N lines, each one will contain two integers separated by a single space Vi and Ci (1 ≤ Vi, Ci ≤ 5,000) representing the value of a coin and the number of coins the princess has with this value, respectively. For each test case, all values of Vi will be distinct.
Output
For each test case print a single line containing "Case n:" (without quotes) where n is the test case number (starting from 1) followed by a space then the number of different ways to make the total sum S as described above. Two ways are considered different if any coin value does not appear the same number of times in both ways.
You can assume that the result will always fit in a 64-bit signed integer.
Sample
Input: 2 10 2 2 2 6 1 10 4 1 10 2 10 3 10 4 10 Output: Case 1: 0 Case 2: 5
Notes:
In the first test case, the only way to make the sum 10, is to use the following subset of coins (2, 2, 6), but this isn't valid because there are 2 coins with value 2 and 1 coin with value 6.
In the second test case, the following are the 5 different ways: (1, 1, 1, 1, 1, 1, 1, 1, 1, 1), (2, 2, 2, 2, 2), (2, 2, 3, 3), (1, 1, 4, 4), (1, 2, 3, 4).
hide comments
egoista_:
2018-09-23 16:39:07
Nice problem
|
|
Akash Garg:
2017-09-02 08:07:45
dp forever :) |
|
Shubhojeet Chakraborty:
2017-01-22 10:25:48
top down gives tle...go botttom up..!
|
|
Rishav Goyal:
2015-07-05 16:40:27
cool problem ;-) |
|
Akhilesh Anandh:
2015-06-05 09:01:53
Really nice problem! Enjoyed solving... |
|
(Tjandra Satria Gunawan)(曾毅昆):
2015-03-27 16:07:30
Nice problem, greedy solution will not work ;-) |
Added by: | Tensor |
Date: | 2015-03-14 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: ASM64 JS-MONKEY |
Resource: | ACPC 2014 |