POJ 1247 Magnificent Meatballs(水~)

470 篇文章 3 订阅

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);
    }
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值