HD 2041 Baskets of Gold Coins

Baskets of Gold Coins

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1838    Accepted Submission(s): 1095


Problem Description
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.

 

Input
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.


 

Output
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.

 

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

Sample Output
  
  
2 10 50
题意: 有N个篮子,每个篮子里面有许多金币,每个金币的重量为w,但是其中有一个篮子里面每一个金币的重量为d,取一些金币,从第一个篮子里面取出一个,第二个取出两个......第N-1个篮子取出N-1个金币,取出金币的总重量为wei,其中每个金币的重量最多为30,篮子的个数不超过8000.求: 较轻的金币的篮子在第几个?
解题思路:先把取出N-1个篮子中的金币的个数计算出来,然后拿个数和每个重量为w的金币相乘,得到的结果减去wei,得到ans,如果ans=0,则第N个篮子为最轻的篮子,否则,得到的ans除以d,得到的结果就是哪个篮子中金币的重量最轻。
 
AC代码:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int n,w,d,wei,ans;
	while(scanf("%d %d %d %d",&n,&w,&d,&wei)!=EOF)
	{
			ans=(w*((1+n-1)*(n-1))/2-wei)/d;
	if(ans==0)
		printf("%d\n",n);
	else
		printf("%d\n",ans);
	}
}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值