codeforces-#465A. inc ARG(模拟)

来源:互联网 发布:阿里巴巴标题优化技巧 编辑:程序博客网 时间:2024/05/16 18:24

       题目大意:给出长度为n的二进制数,做加法是从前向后加,求加1后有多少位发生改变?

      解题思路:直接模拟即可,特判一下第一位,详见code。

      题目来源:http://codeforces.com/problemset/problem/465/A

     code:

#include <iostream>#include <cstdio>#include <cstring>using  namespace std;const int MAXN = 100+10;int n,ans;int num[MAXN];char str[MAXN];int main(){    while(scanf("%d",&n)!=EOF){        ans=0;        memset(str,0,sizeof(str));        memset(num,0,sizeof(num));        for(int i=0;i<n;i++)            cin>>str[i];        int len=strlen(str);        for(int i=0;i<n;i++)            num[i]=str[i]-'0';        if(num[0]==0){            printf("1\n");            continue;        }        for(int i=0;i<n;i++){            if(1&num[i]) ans++;            else if(num[i-1]==1 && num[i]==0){ans++;break;}            else break;        }        printf("%d\n",ans);    }    return 0;}

0 0
原创粉丝点击