零崎总是说自己有一百种梗可玩,然而其实都是假的,是化学成分的,是特技。想要给摊还分析加个梗,实在是不好想,因为这个内容并不是什么算法,而是算法分析。
不过既然还得考,那么没有办法……
“势能法”是摊还分析中一种比较简单常用的方法,而且容易理解。现在零崎有K个硬币,规定每次“翻动”操作只能从最右侧开始翻转硬币,且如果把一个硬币从正面向上翻到背面向上,则需要对其左侧相邻的那个硬币也执行“翻动”操作(翻至最左则结束)。定义硬币组的势为硬币中正面向上的硬币的个数。现在要求你求出从某个给定的硬币组状态之后连续N个“翻动”操作的摊还代价。
硬币组的初始状态以一组数表示,0代表反面,1代表正面。
多组测试数据。
每组测试数据共两行:
第一行K+1个正整数,分别为硬币组中硬币数K和初始状态(0<K<20);
第二行一个正整数,为题目要求你求出的“翻动”操作的个数N(0<N<30)。
每组测试数据输出一行,此行第i个数输出初始状态后第i个操作的摊还代价(1<=i<=N)。
3 0 0 0
2
2 2