Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

【腾讯马拉松3月23日】HDU 4525_威威猫系列故事——吃鸡腿

$
0
0

来源:点击打开链接

大水题,但是当时怎么也想不起来做的方法了。。或者说错在哪了。

公式可以通过从上往下加起来得到:a(n+1)=(k1+k2)*an,但是用__int64的话也是不行的,因为循环调用的时候会有中间数据超过__int64的范围。正解是用double,另外有一个隐含条件是k1,k2都是整数(描述中说了吗 似乎没有= =)。。这样就很容易判断inf了。。

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	double res,k1,k2,notbig;
	int testcase;
	cin>>testcase;
	for(int a=1;a<=testcase;a++)
	{
		res=0;
		int orgn;
		double temp;
		int count=0;
		cin>>orgn>>k1>>k2>>notbig;
		for(int i=0;i<orgn;i++)
		{
			cin>>temp;
			res+=temp;
		}
		
		if(res>notbig)
		{
			cout<<"Case #"<<a<<": "<<0<<endl;
		}
		else if(k1+k2>=-1 && k1+k2<=1)
		{
			cout<<"Case #"<<a<<": "<<"inf"<<endl;
		}
		else
		{
			while(res<=notbig)
			{
				res*=(k1+k2);
				count++;
			}
			cout<<"Case #"<<a<<": "<<count<<endl;
		}
		
		
	}
	
	return 0;
}



作者:mig_davidli 发表于2013-3-31 14:34:22 原文链接
阅读:34 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>