您的位置:首页 > 编程语言 > Go语言

HDU 2401 Baskets of Gold Coins

2017-10-13 14:19 281 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2401

 

Baskets of Gold Coins


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

Total Submission(s):
700    Accepted
Submission(s): 352


[align=left]Problem Description[/align]
You are given N baskets of gold coins.
The baskets are numbered from 1 to N. In all except one of the
baskets, each gold coin weighs w grams. In the one exceptional
basket, each gold coin weighs w-d grams. A wizard appears on the
scene and takes 1 coin from Basket 1, 2 coins from Basket 2, and so
on, up to and including N-1 coins from Basket N-1. He does not take
any coins from Basket N. He weighs the selected coins and concludes
which of the N baskets contains the lighter coins. Your mission is
to emulate the wizard's computation.

 

 

[align=left]Input[/align]
The input file will consist of one or
more lines; each line will contain data for one instance of the
problem. More specifically, each line will contain four positive
integers, separated by one blank space. The first three integers
are, respectively, the numbers N, w, and d, as described above. The
fourth integer is the result of weighing the selected coins.

N will be at least 2 and not more than 8000. The value of w will be
at most 30. The value of d will be less than w.

 

 

[align=left]Output[/align]
For each instance of the problem, your
program will produce one line of output, consisting of one positive
integer: the number of the basket that contains lighter coins than
the other baskets.

 

 

[align=left]Sample Input[/align]

10 25 8
1109 10 25 8 1045 8000 30 12 959879400

 

 

[align=left]Sample Output[/align]

2 10
50

 

 

[align=left]Source[/align]

ACM/ICPC 2008 Warmup(2)——测试帐号(杭州)
 

 

[align=left]Recommend[/align]
lcy
 

题意:有N个篮子,编号1—N,篮子中有很多金币,每个重w.但是有一个编号的篮子中,每个金币重d.现从第一个篮子中拿1个金币,第二个篮子中拿2个……第N-1中拿N-1个,第N中不拿,给出这些金币的总重量wei,问:是第几个篮子中的金币重量较轻?

分析:一道数学题,先求1—N篮子金币应有的总重量w*(1+n-1)(n-1)/2-wei
等差数列求和,再乘每个金币应有的重量,所求和减去wei得到金币重量的差值。若为0,则必为编号N;若不为0,除以d,得到较轻金币的个数,即为所求编号。
代码:

#include<stdio.h>

int main()

{

 int n,w,d,wei,ans;

 while(scanf("%d%d%d%d",&n,&w,&d,&wei)==4)

 {

   ans=w*n*(n-1)/2-wei;

   ans=ans/d;

   if(ans==0)
printf("%d\n",n);

   else
printf("%d\n",ans); 

 }

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: