51nod 1396 还是01串

来源:互联网 发布:淘宝女装美工 编辑:程序博客网 时间:2024/05/23 19:12

统计1的个数就是答案
假设现在有一个长度为n的串有n(n>=0)个1,这时候的合法位置就是n,你可以试着向串里插入几个0,会发现,在n位置前边插入0,要么把一个1挤到n后边,要么把一个0挤到n后边,n左边的0和右边的1始终保持相等。0插到后边不算数。。

讨论里有个证明:设所有数字和为sum,k位置断开,前半段和为i,后半段为sum - i;前半段有sum - i 个 0 (题设条件),有k - sum + i 个 1,由于和为i,所以 k - sum + i = i,得 k = sum

#include <stdio.h>int main(){    int res = 0;    char ch;    while((ch = getchar()) && ch != '\n')        if(ch == '1')            ++res;    printf("%d\n",res);    return 0;}