讨论 / rp++
飞雪天涯 2009-08-18 19:40:00
点我顶贴 收藏 删除
查看状态 Show Status

状态题目:奇怪的贸易

题目编号:81-奇怪的贸易 查看该题

状态: Accepted

测评机: Xeost[5]

得分: 100分

提交日期: 2009-8-19 10:39:00

有效耗时: 4546毫秒

测试结果1: 通过本测试点|有效耗时78ms

测试结果2: 通过本测试点|有效耗时46ms

测试结果3: 通过本测试点|有效耗时47ms

测试结果4: 通过本测试点|有效耗时63ms

测试结果5: 通过本测试点|有效耗时47ms

测试结果6: 通过本测试点|有效耗时859ms

测试结果7: 通过本测试点|有效耗时1000ms

测试结果8: 通过本测试点|有效耗时828ms

测试结果9: 通过本测试点|有效耗时750ms

测试结果10: 通过本测试点|有效耗时828ms

提交代码: /*

查看题目 Show Problem

题目:奇怪的贸易

问题编号:81 [提交该题] [讨论该问题] [有关讨论] [Who AC] [相关题解] [最优解]

My Flag:Unsubmited

题目类型

模拟

描述

刚结束了CS战斗的小D又进入了EVE的游戏世界,在游戏中小D是一名商人,每天要做的事情就是在这里买东西,再运到那里去卖.

这次小D来到了陌生的X星,X星上有n种货物,小D决定每种都买走一些,他用ai来表示第i种货物购买的数量,X星人对物品的单价有特别的决定方式.

他们首先会选择一个基本价x,第一种物品单价为x,第二种物品单价为x2,第三种物品单价为x3……第i种物品单价为xi.

结算总价时,你还需要给他们一笔手续费a0,小D不知道自己带的钱是否能够进行这笔交易,所以请你帮助他计算这笔交易他要支付的总金额是多少.

[数据规模]

对20%的数据,n<=10

对50%的数据,n<=200

对100%的数据,n<=100000

输入格式

x n

a0

a1

a2

.

.

.

an

第一行两个数分别表示基准价x (x<=10),物品种数n (n<=100000)

第二行一个数,手续费a0 (a0<=100)

接下来的n行每行一个数,第i行表示第i种物品购买的数量(ai<=100)

输出格式

输出结果的最后100位,若不足100位请高位用零补足

样例输入

2 3

4

3

2

1

样例输出

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026

*/

#define ONLINE_JUDGE

#include<iostream>

using namespace std;

int ans[101];

int res[101];

int add[101];

void adjustans(){

for (int i=0;i<100;++i){

ans[i+1]+=ans[i]/10;

ans[i]%=10;

}

}

void adjustres(){

for (int i=0;i<100;++i){

res[i+1]+=res[i]/10;

res[i]%=10;

}

}

int main (void){

#ifndef ONLINE_JUDGE

freopen("pid81.in","r",stdin);

freopen("pid81.out","w",stdout);

#endif

int x,n,a0,a;

cin>>x>>n>>a0;

res[0]=1;

ans[0]=a0;

adjustans();

for (int i=0;i<n;++i){

cin>>a;

for (int i=0;i<100;++i) res[i]*=x;

adjustres();

memcpy(add,res,101*sizeof(int));

for (int i=0;i<100;++i) add[i]*=a;

for (int i=0;i<100;++i) ans[i]+=add[i];

adjustans();

}

for (int i=99;i>=0;--i) cout<<ans[i];

return 0;

}

查看更多回复
提交回复