美文网首页
上交OJ-1009. 二哥炒股票

上交OJ-1009. 二哥炒股票

作者: code猪 | 来源:发表于2018-05-17 01:03 被阅读13次

1009. 二哥炒股票


题目描述

二哥需要一个能根据交易记录和股票价格记录统计出先进收益的程序。

现金收益包括两部分,一部分是卖出收入,一部分是每次交易需要支出的费用。卖出收入就是卖出股票获得的总收入减去买入的总支出。股票的价格是按每股的价格给出的,而交易的最小单位是“一手”,每手是100股。每次买入的费用如下所述:

  1. 佣金,收取交易额的0.2%,但最低的收取标准是5元。比如买入总金额为1000元的股票,实际佣金是2元,但不超过5元,所以按5元收取。

  2. 过户费,每一千股收取1元。

  3. 通讯费,由于二哥在上海,每次只收取本地交易费用1元。

每次卖出的费用标准与买入一致,但还要加收证券印花税(交易额的0.1%)。

另外,二哥是个专一的人,他只对一支股票感兴趣。

输入格式

输入分为两部分,第一部分是二哥的交易记录,第二部分是股票价格记录。

交易记录的第一行是一个正整数m,表示共有m个交易动作。每个交易动作占一行,包括三个正整数t, a和d, d = 1时,表示在时间t买入该股票a手,当d = 2时,表示在时间t卖出该股票a手。记录信息保证有意义;d不会取其他值。

股票价格记录的第一行是一个正整数n,表示共有n次价格变动。每次价格变动占一行,包括两个正整数t和v,表示在时间t该股票的价格变为v元每股。价格变动过程是按时间顺序给出的,第一次价格变动之前不会发生交易;t使用的是一个虚拟的时间量度,在时间t进行的交易按价格v计算。

输出格式

输出二哥的现金收益,保留两位小数(四舍五入)。

说明

对于所有数据:m≤50, v≤200, a≤200
对于70%的数据:n≤100 , t≤10000
对于30%的数据:n≤10000 , t≤100000000

Sample Input

2
15 50 1
40 30 2
4
10 100
20 90
30 95
40 102

Sample Output

-195928.00

分析

题目本来很简单,但是其中要特别注意int除法运算会削去小数点。

#include <iomanip>
#include <iostream>

using namespace std;

int main()
{
    int m;
    int in[50][3];
    double sum=0.0;
    int i;
    int n;
    int t=0, v=0;
    int tmp_t, tmp_v;
    int record=0;
    
    cin>>m;
    for(i=0; i<m; i++)
        cin>>in[i][0]>>in[i][1]>>in[i][2];
    
    cin>>n;
    for(i=0; i<n; i++) {
        cin>>tmp_t>>tmp_v;
        for(record=0; record<m; record++) {
            if(in[record][0]>=t && in[record][0]<tmp_t) {
                double tmp = in[record][1]*100*v*0.002;
                if(in[record][2]==1) {
                    sum = sum - (tmp > 5 ? tmp : 5);
                    sum = sum - in[record][1]*100.0/1000;
                    sum = sum - 1;
                    sum = sum - in[record][1]*100*v;
                }
                else if(in[record][2]==2) {
                    sum = sum - (tmp > 5 ? tmp : 5);
                    sum = sum - in[record][1]*100.0/1000;
                    sum = sum - 1;
                    sum = sum - in[record][1]*100*v*0.001;
                    sum = sum + in[record][1]*100*v;
                }
            }
        }
        t=tmp_t, v=tmp_v;
    }
    
    for(record=0; record<m; record++) { //注意最后的时间
        if(in[record][0]>=t) {
            double tmp = in[record][1]*100*v*0.002;
            if(in[record][2]==1) {
                sum = sum - (tmp > 5 ? tmp : 5);
                sum = sum - in[record][1]*100.0/1000;
                sum = sum - 1;
                sum = sum - in[record][1]*100*v;
            }
            else if(in[record][2]==2) {
                sum = sum - (tmp > 5 ? tmp : 5);
                sum = sum - in[record][1]*100.0/1000;
                sum = sum - 1;
                sum = sum - in[record][1]*100*v*0.001;
                sum = sum + in[record][1]*100*v;
            }
        }
    }
    
    cout.setf(ios::fixed);
    cout<<setprecision(2)<<sum;
    
    return 0;
}

相关文章

  • 上交OJ-1009. 二哥炒股票

    1009. 二哥炒股票 题目描述 二哥需要一个能根据交易记录和股票价格记录统计出先进收益的程序。 现金收益包括两部...

  • 愿所有的婚姻都是因为爱情

    1 二哥离婚了,现在又娶了个老婆,很严厉,把二哥控制的死死的。 二哥挣得钱全部上交。不允许二哥出去胡吃海喝出门会朋...

  • 上交OJ-1002. 二哥种花生

    1002.二哥种花生 Description 二哥在自己的后花园里种了一些花生,也快到了收获的时候了。这片花生地是...

  • 上交OJ-1007. 二哥领工资

    1007. 二哥领工资 题目描述 二哥当了多年的助教,今天终于要发工资了!二哥正在高兴之际,得知工资是分两部分发放...

  • 上交OJ-1008. 二哥买期货

    二哥买期货 Description 二哥想知道在一段时期内,一共有多少个交易日。期货交易日的限定如下: 周六、周日...

  • 炒股票入门基础知识【干货总结】

    炒股票入门基础知识 炒股票入门技巧 炒股票技术知识 炒股票入门技术 微信公众号:中资财经 公众号上提供【免费诊股】...

  • 上交OJ-1010. 二哥的储蓄计划

    1010. 二哥的储蓄计划 Description 二哥的零花钱一直都是自己管理。每个月的月初妈妈给二哥300元钱...

  • 不要炒股票1:股市即赌场

    今天开始写“不要炒股票”系列。 为什么叫这个名字,因为这就是主题,不要炒股票。 先说理念吧,股场即赌场。股价的所有...

  • 《富爸爸 财务自由之路》读书笔记(二)

    前言:赌马的人和炒股票的人之间没有区别,不要做炒股票的人,你长大后应该成为发行股票的人。所有股票都由经纪人出售,然...

  • 当心,网上炒期货骗局,也许你操作的就是黑平台

    我身边的朋友多数都在炒股票,也跟着朋友去学习炒股票,刚开始做的时候还不错,后来大盘行情不好,就收手没有再做了。...

网友评论

      本文标题:上交OJ-1009. 二哥炒股票

      本文链接:https://www.haomeiwen.com/subject/gisvdftx.html