Description
一个圆桌,一堆数字,S顺时针走,E逆时针走,走过每个数字时就把数字加起来,问2个人在哪里相遇时他们的加和相同
Input
多组测试用例,每组用例第一个整数n(2<=n<=30)表示圆桌上数字个数,后面n个整数表示数值,以n=0结束输入
Output
如果两人可以相遇则输出两人相遇时的位置,否则输出No equal partitioning.
Sample Input
5 9 4 2 8 3
5 3 9 4 2 8
6 1 2 1 2 1 2
6 1 2 1 2 1 1
0
Sample Output
Sam stops at position 2 and Ella stops at position 3.
No equal partitioning.
No equal partitioning.
Sam stops at position 3 and Ella stops at position 4.
Solution
水题,计算所有数字的总和,如果不能被2整除 则不可能存在;如果存在则从a1累加,如果找到ai时有等于sum的一半并且n>i就输出i和i+1 不然就输出找不到
Code
#include<stdio.h>
int main()
{
int n,a[30],i,j,count;
scanf("%d",&n);
while(n!=0)
{
count=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
count+=a[i];
}
if(count%2!=0)//总数不能被2整除,必然不能相遇
printf("No equal partitioning.\n");
else
{
count/=2;
for(i=0;i<n&&(count=count-a[i])>0;i++);
if(count==0)//可以相遇
printf("Sam stops at position %d and Ella stops at position %d.\n",i+1,i+2);
else//不能相遇
printf("No equal partitioning.\n");
}
scanf("%d",&n);
}
}