程式碼:(解法一)
#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;
}
沒有留言:
張貼留言