2020年3月3日 星期二

11398 - The Base-1 Number System

先說這個解法在uva給我CE.....我的想法是一次讀一行做分析,不過比較好的好像是一個區段一個區段計算就好。

程式碼:(解法一)
#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;
}

沒有留言:

張貼留言