赛码网的股神编程题
2017-09-23 17:18 雄风狂飙 阅读(178) 评论(0) 收藏 举报题目:
有股神吗?
有,小赛就是!
经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。
为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?
答案:
#include <iostream>
#include <string>
using namespace std;
long price(const long& day)
{
if(day == 1)
return 1;
long ascDays = 0;
long descDays = 0;
long tmpday = day - 1;
long ascPrice = 0;
long maxAscDay = 0;
long tmpMaxAscDay = 0;
long desDay = 0;
while(true)
{
tmpMaxAscDay = 0;
while(true)
{
if( tmpMaxAscDay <= maxAscDay + 1 )
{
--tmpday;
++tmpMaxAscDay;
if( tmpday == 0 )
{
//cout<<"111maxAscDay=="<<maxAscDay<<"desDay=="<<desDay<<"tmpMaxAscDay=="<<tmpMaxAscDay<<endl;
return 1+(( 1+maxAscDay)*maxAscDay)/2 -desDay + tmpMaxAscDay;
}
if( tmpMaxAscDay == maxAscDay + 1)
{
++maxAscDay;
tmpMaxAscDay = 0;
break;
}
}
}
--tmpday;
++desDay;
if( tmpday == 0 )
{
//cout<<"222maxAscDay=="<<maxAscDay<<"desDay=="<<desDay<<"tmpMaxAscDay=="<<tmpMaxAscDay<<endl;
return 1+(( 1+maxAscDay)*maxAscDay)/2 -desDay + tmpMaxAscDay;
}
}
}
int main()
{
string strValue = "";
while(cin>>strValue)
{
cout<<price( atoi( strValue.c_str() ) )<<endl;
strValue = "";
}
//cout<<"our test"<<endl;
//strValue="15";
//long rel = price( atoi( strValue.c_str() ) );
//cout<<"rel=="<<rel<<endl;
return 0;
}
说明:
所有测试数据均已输出正确结果!
^_^
浙公网安备 33010602011771号