题目背景
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[n]+=p[m]*(n-m+1);
}
wt[n]+=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=。=
版权声明:本文为ATiao_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。