Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: august
Problemset: กราฟสัญญาณดิจิทัล
Language: c
Time: 0.001 second
Submitted On: 2025-10-12 15:12:14
#include <stdio.h>
int main() {
char c[100];
int n;
scanf("%s %d", c, &n);
if (c[0] >= 65) {
char st[100];
int cur=0;
for (int i=0; i<10; i++) {
if (c[i] == '\0') break;
int vv=c[i], cnt=7;
char tem[8];
for (int j=0; j<8; j++) tem[j]='0';
while (vv != 0) {
char ff=48+vv%2;
tem[cnt--]=ff;
vv/=2;
}
for (int j=0; j<8; j++) {
if (cur < 99) st[cur++]=tem[j];
}
}
if (cur > 99) cur = 99;
st[cur] = '\0';
for (int i=0; i<=cur; i++) {
c[i]=st[i];
}
}
int si=0;
for (int i=0; i<100; i++) {
if (c[i] == '\0') break;
si++;
}
if (si==0 || n<=0) return 0;
char b[n][n*si];
for (int i=0; i<n; i++) {
for (int j=0; j<n*si; j++) {
b[i][j]='_';
}
}
int cur=0, state=1,i=0;
while (i<si) {
int j=i+1;
while (j<si && c[i]==c[j]) j++;
int nm=j-i;
int plus=(nm-1)*n + (n-nm+1);
if (state != c[i]-'0') {
if (cur < n*si) {
for (int r=0; r<n; r++) b[r][cur]='x';
}
state=c[i]-'0';
}
for (int k=cur; k<cur+plus && k<n*si; k++) {
b[(state == 1? 0 : n-1)][k]='x';
}
cur=cur+plus-1;
if (cur >= n*si) cur = n*si-1;
i=j;
}
for (int i=0; i<n; i++) {
for (int j=0; j<=cur && j<n*si; j++) {
printf("%c", b[i][j]);
}
printf("\n");
}
}