# POJ-1959 Darts

Darts Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1286 Accepted: 741 Description

Background Many nations (including Germany) have a strange tradition of throwing small arrows at round flat targets (usually, these small arrows are called darts and so is the game). In a darts game, the target consists of a flat circle which is divided into slices and rings. The slices are numbered from 1 to 20 and the rings are called double or treble ring (see Figure 5). The center part of the board is called the bull’s eye which is further subdivided into an inner part (the real bull’s eye) and an outer part (called the bull, see Fig. 5).

Players take turns in throwing the darts at the board. Their score depends on the areas they hit with their darts. Hitting the 20 slice in the double ring scores 2 * 20 = 40 points. Hitting the treble ring multiplies the score by 3. The inner part of the bull’s eye counts 50, the outer part 25 points. Every turn consists of 3 darts being thrown at the dartboard by a player and his score is the sum of the scores of all darts which hit the dartboard in one of the numbered areas. Problem Your friends have played darts yesterday and from their match the scores are still on the blackboard in your room. From reading the scores, you would like to know, how the individual players threw their darts and where they could have hit the dartboard. You are to write a program which, given the score of a turn,reconstructs the number of possible distinct combinations of hits of the three darts on the dartboard ignoring the order in which the darts are thrown. As an example, consider the overall score of 3 of a player. This could have happened as follows: 3 = 0 + 0 + 1*3 one dart hits slice 3

3 = 0 + 0 + 3*1 one dart hits slice 1 in treble ring

3 = 0 + 1*1 + 1*2 one dart hits slice 1 and one dart hits slice 2

3 = 0 + 1*1 + 2*1 one dart hits slice 1 and one dart hits slice 1 in double ring

3 = 1*1 + 1*1 + 1*1 all three darts hit slice 1

The resulting sum of possible distinct combinations is 5. A more complex example is score 9: 9 = 0 + 0 + 1*9 one dart hits slice 9

9 = 0 + 0 + 3*3 one dart hits slice 3 in treble ring

9 = 0 + 1*1 + 1*8 one dart hits slice 1 and one dart hits slice 8

9 = 0 + 1*1 + 2*4 one dart hits slice 1 and one dart hits slice 4 in double ring

9 = 0 + 3*2 + 1*3 one dart hits slice 2 in treble ring and one dart hits slice 3

9 = 1*1 + 1*1 + 1*7 two darts hit slice 1 and one dart hits slice 7

9 = 2*1 + 3*1 + 2*2 one dart hits slice 1 in double ring, one dart hits slice 1 in treble ring and one dart hits slice 2 in double ring

9 = 1*3 + 1*3 + 1*3 three darts hit slice 3

9 = 1*3 + 1*3 + 3*1 two darts hit slice 3 and one dart hits slice 1 in treble ring

9 = 1*3 + 3*1 + 3*1 one dart hits slice 3 and two darts hit slice 1 in treble ring

9 = 3*1 + 3*1 + 3*1 three darts hit slice 1 in treble ring

What is the number of combinations? Write a program to find out. Input

The first line contains the number of scenarios. For each scenario, you are give a dart score as a single positive integer on a line by itself. Output

The output for every scenario begins with a line containing “Scenario #i:”, where i is the number of the scenario starting at 1. Then print the number of possible dart score combinations on a line by itself.Finish the output of every scenario with a blank line. Sample Input

2 3 9 Sample Output

Scenario #1: 5

Scenario #2: 41

```#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
#include <math.h>

using namespace std;
int n;
int a[63]={
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,
3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,
25,50
};
int main()
{
int t;
scanf("%d",&t);
int res;
int cas=0;
while(t--)
{
res=0;
scanf("%d",&n);
for(int i=0;i<63;i++)
{
for(int j=i;j<63;j++)
{
for(int k=j;k<63;k++)
{
if(a[i]+a[j]+a[k]==n)
{
res++;
}

}
}
}
printf("Scenario #%d:\n",++cas);
printf("%d\n\n",res);
}
return 0;
}```

0 条评论

## 相关文章

### POJ-2039 To and Fro

To and Fro Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8...

22140

### 1000. A-B

Time Limit: 1 secs, Memory Limit: 32 MB                                         ...

13210

### poj------(3468)A Simple Problem with Integers(区间更新)

A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K ...

383100

### ZOJ 3607 Lazier Salesgirl (枚举)

Lazier Salesgirl Time Limit: 2 Seconds Memory Limit: 65536 KB Kochiya S...

37670

### HDUOJ---(4708)Rotation Lock Puzzle

Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 327...

25240

### HDUOJ----More is better（并查集）

More is better Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 327680/10...

412120

### HDUOJ -----1686

Oulipo Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja...

33370

### hdu 1805Expressions（二叉树构造的后缀表达式）

Expressions Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 ...

35660

### 关于如何从Go 1到Go 2进行不兼容的更改，而尽可能少地进行破坏的建议。

A proposal for how to make incompatible changes from Go 1 to Go 2 while breaking...

21150

### ZOJ 3713 In 7-bit

Very often, especially in programming contests, we treat a sequence of non-white...

34350