1009. 二哥炒股票| Online Judge

题意十分清楚,注意价格的判断即可

不多说,直接上代码;

#include <iostream>
#include <stdio.h>

using namespace std;

//transRecord 交易记录  m次

//priceRecord 价格记录  n个

//买入总花费
double buyCost(int num,int price){
    int shareNum=num*100;

    double totalPrice=shareNum*price*1.0;
    double commission=max(shareNum*price*0.002,5.0);
    double transFee=shareNum/1000.0;
    double communicationFee=1.0;

    return totalPrice+commission+transFee+communicationFee;
}

//售出总花费
double sellCost(int num,int price){
    int shareNum=num*100;

    double commission=max(shareNum*price*0.002,5.0);
    double transFee=shareNum/1000.0;
    double communicationFee=1.0;
    double tax=shareNum*price*0.001;

    return commission+transFee+communicationFee+tax;
}

//售出总收入
double sellIncome(int num,int price){
    return num*price*100.0;
}

//交易净收益
double trans(int num,int price, int opt){
    if(opt==1){
        return buyCost(num,price)*(-1.0);
    }
    //(opt==2)
    return sellIncome(num,price)-sellCost(num,price);

}

int main(){
    int m,n;

    //读入交易记录
    cin>>m;
    int transRecord[m][3];
    for(int i=0;i<m;i++){
        cin>>transRecord[i][0];
        cin>>transRecord[i][1];
        cin>>transRecord[i][2];
        //cout<<"trans: "<<i<<endl;
    }

    //读入价格变化记录
    cin>>n;
    int priceRecord[n][2];
    for(int i=0;i<n;i++){
        cin>>priceRecord[i][0];
        cin>>priceRecord[i][1];
        //cout<<"price: "<<i<<endl;
    }

    //日期记录指针 pDate
    //交易日期指针 pTrans

    int pDate=1,pTrans=0;
    double income=0.0;

    int Tnum=0,Tprice=0,Topt=1;
    for(;pTrans<m;pTrans++){
        Tnum=transRecord[pTrans][1];
        Topt=transRecord[pTrans][2];
        for(;pDate<n;pDate++){
            if(priceRecord[pDate][0]>transRecord[pTrans][0]&& \
            priceRecord[pDate-1][0]<=transRecord[pTrans][0]){
                Tprice=priceRecord[pDate-1][1];
                break;
            }
            else{
                Tprice=priceRecord[pDate][1];
            }
        }
        income+=trans(Tnum,Tprice,Topt);
    }

    printf("%.2f",income);

    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值