均分纸牌
来源:互联网 发布:focusky mac版 编辑:程序博客网 时间:2024/04/27 13:23
Problem Description
有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若干张纸牌,然后移动。
移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;
现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。
例如 N=4,4 堆纸牌数分别为: ① 9 ② 8 ③ 17 ④ 6
移动3次可达到目的:
从 ③ 取4张牌放到④(9 8 13 10)->从③取3张牌放到 ②(9 11 10 10)-> 从②取1张牌放到①(10 10 10 10)。
移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;
现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。
例如 N=4,4 堆纸牌数分别为: ① 9 ② 8 ③ 17 ④ 6
移动3次可达到目的:
从 ③ 取4张牌放到④(9 8 13 10)->从③取3张牌放到 ②(9 11 10 10)-> 从②取1张牌放到①(10 10 10 10)。
Input
输入有多组数据,每组数据有两行,第一行为 N(N 堆纸牌,1 <= N <= 100),第二行为每堆纸牌的初始
数 A1 A2 … An (l<= Ai <=10000),输入以N为0结束。
数 A1 A2 … An (l<= Ai <=10000),输入以N为0结束。
Output
对于每组数据,所有堆均达到相等时的最少移动次数。
Sample Input
49 8 17 60
Sample Output
3
//标程:#include<cstdio>int main(){ int n, a[110], i; while(scanf("%d",&n),n) {int sum(0), cnt(0); for(i=0;i<n;i++) { scanf("%d",&a[i]); sum += a[i]; } sum /= n; for(i = 0; i < n; i ++) { if(a[i] != sum) cnt++; a[i+1] += a[i] - sum; } printf("%d\n",cnt); } return 0;}
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- 均分纸牌
- fjnu 1454 均分纸牌
- 【模拟】【NOIP2002】均分纸牌
- wikioi p1098 均分纸牌
- 关于JDT的ASTParser解析
- cf 363A B C
- 星号图
- 四件在我步入职业软件开发生涯那天起就该知道的事情
- 第一次用string类,贴一下代码
- 均分纸牌
- 练习赛8.2.均分纸牌
- ACM-贪心之今年暑假不AC——hdu2037
- Prime Path
- 如何查看进程PID,xp系统资源管理器查看进程PID
- UWSGI配置中文说明
- 点的查找
- php curl简单使用
- codeforces 363A round211 div2 A.Soroban