题目背景
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:141 2 3 4Output: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=。=
新闻热点
疑难解答