您的位置:首页 > 其它

BIT琪露诺的完美算法教室 4.吃货的烦恼

2017-02-20 09:25 225 查看
题目背景

za果然是半吊子水平,竟然选了一个最肥的Pikachu做小伙伴。经过实战za发现这只Pikachu战斗水平并不高,但是体重很可观。于是za打算将其往卡比兽方向培养。

其实这只极度肥胖的Pikachu也不算很能吃,但不知道为什么连喝水都能胖。这个问题困扰了za很久,终于经过彻夜的冥想,za终于发现其中的奥秘了!(广大吃货朋友的福音)

原来这只Pikachu的消化系统很有问题,吃下的食物会在肚子里不断累积增加体重,且会随着时间的增长成倍增加!

即设Pikachu初始体重为w,那么当第1秒吃了重量为p1的食物后,1s后Pikachu体重变为w+p1;第2秒又吃了重量为p2的食物,则2s后Pikachu的体重为w+p1*2+p2。

za的数学学得很糟糕,不能准确的计算他的Pikachu当前重量。小伙伴们,帮帮忙算一算吧!


输入

第一行:Pikachu的初始体重w

第二行:Pikachu吃东西持续的时间N(1<=N<=30000)

第三行:包含N个整数pi,代表Pikachu每一秒吃的食物的重量。由于Pikachu实在太胖了,za把食物重量控制在一个小范围内。(0<=pi<=4)

注:za作为训练师中的业界良心,保证Pikachu的体重不会超过int范围,不会被撑死。


输出

Pikachu在每一秒后的体重


Example:

Input:

1

4

1 2 3 4

Output:

2 5 11 21

第1s:1 + 1*1;

第2s:1 + 1*2 + 2*1;

第3s:   1 + 1*3 + 2*2 + 3*1;

第4s:1 + 1*4 + 2*3 + 3*2 + 4*1;


作者

za


#include <stdio.h>
#include <stdlib.h>

int wt[30001]={0},p[30001]={0};

void f(int n,int M,int v){

int m;

for(n=0;n<M;n++){

for(m=0;m<=n;m++){

wt
+=p[m]*(n-m+1);

}

wt
+=v;
}
}

int main(){

int w,N,i;

scanf("%d",&w);

scanf("%d",&N);

for(i=0;i<N;i++){

scanf("%d",&p[i]);

}

f(i,N,w);

for(i=0;i<N-1;i++){
printf("%d ",wt[i]);
}

printf("%d\n",wt[N-1]);

return 0;
}


不用函数的话我的渣渣程序最后一个用例会TLE=。=
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: