hihocoder #1527 : 快速乘法(二幂拆分)

来源:互联网 发布:access数据库就业前景 编辑:程序博客网 时间:2024/06/05 02:54

题目:http://hihocoder.com/problemset/problem/1527

题解:

http://www.cnblogs.com/atyuwen/archive/2012/08/04/pow2_partition.htm

#include<bits/stdc++.h>using namespace std;const int N = 1e6+5;char a[N];int main(){    scanf("%s",a+1);    int n = strlen(a+1);    int l = 1,r = n;    while(l <= n && a[l] == '0')        l++;    while(r >= 0 && a[r] == '0')        r--;    int u = 1,d = 1;    for(int i = r-1;i >= l;i--)        if(a[i] == '1')            u = min(u,d)+1;        else            d = min(u,d)+1;    printf("%d\n",u*2-1);    return 0;}


原创粉丝点击