题目描述
有股神吗?
有,小赛就是!
经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。
为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?
输入
输入包括多组数据; 每行输入一个n,1<=n<=10^9 。
| 样例输入
1 2 3 4 5
|
输出
请输出他每股股票多少钱,对于每组数据,输出一行。
| 样例输出
1 2 1 2 3 |
段数: 1 | 2 | 3 | 4 | 5 | 6 ... 天数: 1 2 | 3 4 5 | 6 7 8 9 | 10 11 12 13 14 | 15 16 17 18 19 20 | 21 ... 价格: 1 2 | 1 2 3 | 2 3 4 5 | 4 5 6 7 8 | 7 8 9 10 11 12 | 11 ... 差值: 0 | 2 | 4 | 6 | 8 | 10 ...
第i段天数为i+1,,价格差距为2(i-1),前i段天数为i(i+3)/2,
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;int main()
{
unsigned long i,n;
int sum;
while(scanf("%lld",&n)!=EOF)
{
i=2;sum=0;
if(n==1||n==2) sum=n;
else if(n==3||n==4||n==5) sum=2;
else
{
while(1)
{
if((i+2)*(i-1)/2<n&&n<(i+3)*(i)/2+1)
{
sum=n-2*(i-1);
break;
}
i++;
}
//sum=n-2*((sqrt(1+8*n)-1)/2-1);
}
printf("%d\n",sum);
}
return 0;
}