Hust oj 1052 Darts(翻译题)

Darts
Time Limit: 1000 MSMemory Limit: 65536 K
Total Submit: 50(22 users)Total Accepted: 30(20 users)Rating: Special Judge: No
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 1). 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. 1).

Figure 1:  Layout of a dart board
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

 poj上原题,一共就63种分,暴力就可以了,主要是读题看着烦= =

#include <iostream>
using namespace std;
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,50,25};
int solve(int score)
{
    int i,j,k,res=0;
    for (i=0;i<63;++i)
        for (j=i;j<63;++j)
            for (k=j;k<63;++k)
                if(a[i]+a[j]+a[k]==score)
                    ++res;
    return res;
}
int main()
{
    int cnt,score;
    scanf("%d",&cnt);
    for (int i=1;i<=cnt;++i)
    {
        scanf("%d",&score);
        printf("Scenario #%d:\n%d\n\n",i,solve(score));
    }
    return 0;
}


hustoj.iso 是一个软件系统镜像文件。Hustoj是一个开源的在线评测系统,它被广泛应用于大学和高中的程序设计教学中。该系统的目标是提供一个方便使用的在线评测和训练环境,使学生能够提交他们的程序代码,并获得即时的评测结果。 hustoj.iso 是Hustoj的系统镜像文件,可以用来部署Hustoj系统。通过将hustoj.iso 文件安装到服务器上,就可以建立一个运行Hustoj系统的评测服务器。用户可以通过web界面访问该服务器,并提交自己的程序代码进行评测。 hustoj.iso 是一个基于Ubuntu操作系统的镜像文件。它集成了所有Hustoj系统所需要的软件和依赖项,并进行了预配置,使得安装和部署变得更加简单。用户只需要将hustoj.iso文件写入到U盘或光盘中,然后引导服务器从U盘或光盘启动,就可以开始安装Hustoj系统了。 使用hustoj.iso 部署Hustoj系统,可以为学生提供一个良好的在线评测环境,帮助他们进行程序设计的学习和训练。学生可以在该系统中提交自己的程序代码,并获得详尽的评测结果,包括运行时间、内存消耗、错误信息等等。同时,Hustoj还具有包括代码分享、竞赛组织等其他功能,能够满足不同需求的学生。 总之,hustoj.iso 是一个用于部署Hustoj系统的镜像文件,通过安装hustoj.iso,可以搭建一个功能完善、易用的在线评测环境,为程序设计学习提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值