Submission

Status:

----------

Subtask/Task Score:

0/100

Score: 0

User: Jokul

Problemset: กราฟสัญญาณดิจิทัล

Language: c

Time: 0.002 second

Submitted On: 2025-10-11 16:27:15

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    char s[101];
    int n,l;
    scanf("%s",s);
    if(s[0]=='0'||s[0]=='1'){
    l=strlen(s);
    scanf("%d",&n);
    char a[n][(n-1)*(l)+2];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<=(n-1)*(l);j++)
        {
            a[i][j]='_';
        }
    }
    a[0][0]='X';
    ////////////////////////////////////
    if(s[0]=='0')
    {
        for(int i=0;i<n;i++)
        {
            a[i][0]='X';
        }
    }
     for(int i=0;i<n;i++)
     {
        for(int j=1;j<=(n-1)*(l);j++)
        {
           if(s[(j-1)/(n-1)]=='0')
           {
               a[n-1][j]='X';
           }
           if(s[(j-1)/(n-1)]=='1')
            {
               a[0][j]='X';
           }
        }
     }
      for(int i=0;i<n;i++)
     {
        for(int j=1;j<(n-1)*(l);j++)
        {
           if((j-1)/(n-1)!=j/(n-1)&&s[(j-1)/(n-1)]!=s[j/(n-1)])
           {
               a[i][j]='X';
           }
        }
     }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<=(n-1)*(l);j++)
        {
            printf("%c",a[i][j]);
        }
        printf("\n");
    }
    }
    else{
        int t=strlen(s);
    int trans[t];
    for(int i=0;i<t;i++)
    {
        trans[i]=s[i];
    }
            /////////////////////////////////////////
    int base2[t],mul=1;
    for(int i=0;i<t;i++)
    {
        base2[i]=0;
    }
    for(int i=0;i<t;i++)
    {
        mul=1;
        while(trans[i]>0)
        {
            base2[i]=base2[i]+(trans[i]%2)*mul;
            mul=mul*10;
            trans[i]=trans[i]/2;
        }
    }
    int l=0,eachl[t];
    for(int i=0;i<t;i++)
    {
        l=l+log10(base2[i]*10);
        eachl[i]=log10(base2[i])+2;
        //printf("%d ",base2[i]);
        //printf("%d",eachl[i]);
    }
    l=l+t;
    int te=l-1;
    //printf("%d ",l);
    char s[l];
    for(int i=t-1;i>=0;i--)
    {
        for(int j=0;j<eachl[i];j++)
        {
            s[te]='0'+(base2[i]%10);
           // printf("%c ",s[te]);
            base2[i]=base2[i]/10;
            te--;
        }
    }
    //printf("\n%d\n",te);
   /* for(int i=0;i<l;i++)
    {
        printf("%c",s[i]);
    }*/
        scanf("%d",&n);
    char a[n][(n-1)*(l)+2];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<=(n-1)*(l);j++)
        {
            a[i][j]='_';
        }
    }
    a[0][0]='X';
    ////////////////////////////////////
    if(s[0]=='0')
    {
        for(int i=0;i<n;i++)
        {
            a[i][0]='X';
        }
    }
     for(int i=0;i<n;i++)
     {
        for(int j=1;j<=(n-1)*(l);j++)
        {
           if(s[(j-1)/(n-1)]=='0')
           {
               a[n-1][j]='X';
           }
           if(s[(j-1)/(n-1)]=='1')
            {
               a[0][j]='X';
           }
        }
     }
      for(int i=0;i<n;i++)
     {
        for(int j=1;j<(n-1)*(l);j++)
        {
           if((j-1)/(n-1)!=j/(n-1)&&s[(j-1)/(n-1)]!=s[j/(n-1)])
           {
               a[i][j]='X';
           }
        }
     }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<=(n-1)*(l);j++)
        {
            printf("%c",a[i][j]);
        }
        printf("\n");
    }
    }
}