• hdoj 2401 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): 1855    Accepted Submission(s): 1104


    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,m  代表n个篮子,每个篮子中放很多金币(大于等于n)每个金币的重量都是w但是有一个篮子中的金币重量是w-d,现在从篮子中拿出来金币,从第一个篮子中拿出一个,第二个篮子拿出两个,第n-1个篮子拿出n-1个第n个篮子不拿,现在给你拿出来的所有金币的总重量m问你第几个个篮子中的金币重量是w-d
    题解:计算出当所有的金币重量都是w时按照此方法拿出的金币总重量sum减去m,得到ans则可知  x=ans/d;注意当ans==0时证明,第n个篮子中金币重量为w-d
    #include<stdio.h>
    #include<string.h>
    #define LL long long
    int main()
    {
    	int w,d,n;
    	int i;
    	LL m,sum,ans;
    	while(scanf("%d%d%d%lld",&n,&w,&d,&m)!=EOF)
    	{
    		sum=0;
    		for(i=1;i<n;i++)
    		    sum+=i*w;
    		ans=sum-m;
    		if(ans==0)
    		printf("%d
    ",n);
    		else 
    		printf("%lld
    ",ans/d);
    	}
    	return 0;
    } 
    

      

  • 相关阅读:
    【C++札记】友元
    【C++札记】const关键字
    【C++札记】实现C++的string类
    【C++札记】拷贝构造函数,浅拷贝和深拷贝
    【C++札记】内联函数
    【C++札记】函数重载
    文章博客导航
    【C++札记】标准输入与输出
    毕业季,学子们又把翟天临推上了热搜!
    【底层原理】高级开发必须懂的"字节对齐"
  • 原文地址:https://www.cnblogs.com/tonghao/p/4802967.html
Copyright © 2020-2023  润新知