程式碼:(解法一)
#include <stdio.h> int main() { char s[1000]; while(gets(s)!=0&&s[0]!='~') { int i=0,num=0,flag=0,n=0; while(s[i]!='#') { if(s[i+1]==' ') { i+=2; flag=1; } else if(s[i+2]==' ') { i+=3; flag=0; } while(s[i]!=' ') { i++; n++; } i++; for(int j=0;j<n-2;j++) num=num*2+flag; n=0; } printf("%d\n",num); } return 0; }
下面這個丟兩邊都有過,而且想法簡單多了,真不知我為什麼沒想到。
程式碼:(解法二)
#include <stdio.h> #include <string.h> int main() { int flag=0,num=0,n; char s[31]; while(scanf("%s",s)&&s[0]!='~') { if(s[0]=='#') { printf("%d\n",num); num=0; } else if(strlen(s)==1) { flag=1; } else if(strlen(s)==2) { flag=0; } else { n=strlen(s)-2; for(int i=0;i<n;i++) num=num*2+flag; } } return 0; }
沒有留言:
張貼留言