/*Decode the tape 在很多次RUNTIME ERROR后终于AC了!
失败原因:数组开得太大,没有优化代码,浪费了大量空间。*/
#include<stdio.h>
#include<string.h>
#define LOCAL
int btod(char c[],int n)
{
if(n==0) return (c[0]-48);
else return (c[n]-48)+2*btod(c,n-1);
}
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
freopen("o.txt","w",stdout);
#endif
int i,j,k,tt=0,key,nj=0;
char txt[1000],num[10]={0};
while(gets(txt)!=0)
{
if(strlen(txt)>3)
{
for(j=2;j<strlen(txt)-1;j++)
{
if(txt[j]=='o')
{
num[nj++]='1';
}
else if(txt[j]!='.'&&txt[j]!='_')num[nj++]='0';
}
num[nj]='\0';
if(nj>3)
{
key=btod(num,strlen(num)-1);
printf("%c",key);
}
nj=0;
}
}
return 0;
}
UVA - 10878 - Decode the tape
最新推荐文章于 2022-02-25 21:57:21 发布