Submission
Status:
----------
Subtask/Task Score:
0/100
Score: 0
User: theem1502
Problemset: กราฟสัญญาณดิจิทัล
Language: c
Time: 0.002 second
Submitted On: 2025-09-26 14:22:15
#include <stdio.h>
#include <stdlib.h>
int main() {
char num[10000];
int howlong;
scanf("%s %d", num, &howlong);
int length = 0;
while (num[length] != '\0') {
length++;
}
char **thearray = malloc(howlong * sizeof(char*));
for (int i = 0; i < howlong; i++) {
thearray[i] = malloc(1000 * sizeof(char));
}
for (int i = 0; i < howlong; i++) {
for (int j = 0; j < 1000; j++) {
thearray[i][j] = '_';
}
}
int keeptrack = 0;
for (int i = 0; i < length; i++) {
int currentnum = num[i];
if (currentnum >= 'A' && currentnum <= 'z') {
int tempnum = currentnum;
int wtf = 0;
char binary[8];
while (tempnum > 0){
binary[wtf++] = (tempnum&1) + '0';
tempnum = tempnum >> 1;
}
int binarylength = 0;
while (binary[binarylength] != '\0') {
binarylength++;
}
binary[7] = '0';
binarylength = 8;
for (int j = 7; j >= 0; j--) {
int realcurrentnum = binary[j];
if (realcurrentnum == '0') {
if (i == 0 && j == binarylength-1) {
for (int j = 0; j < howlong; j++) {
thearray[j][0] = 'X';
}
}
for (int j = 0; j< howlong; j++) {
thearray[howlong - 1][keeptrack++] = 'X';
}
if (binary[j-1] == '1') {
keeptrack--;
for (int j = 0; j < howlong; j++) {
thearray[j][keeptrack] = 'X';
}
}
}
else if (realcurrentnum == '1') {
for (int j = 0; j < howlong; j++) {
thearray[0][keeptrack++] = 'X';
}
if (binary[j-1] == '0') {
keeptrack--;
for (int j = 0; j < howlong; j++) {
thearray[j][keeptrack] = 'X';
}
}
}
}
}
else{
printf("%s", "pass");
if (currentnum == '0') {
if (i == 0) {
for (int j = 0; j < howlong; j++) {
thearray[j][0] = 'X';
}
}
for (int j = 0; j< howlong; j++) {
thearray[howlong - 1][keeptrack++] = 'X';
printf("%d", keeptrack);
}
if (num[i+1] == '1') {
keeptrack--;
for (int j = 0; j < howlong; j++) {
thearray[j][keeptrack] = 'X';
}
}
}
else if (currentnum == '1') {
for (int j = 0; j < howlong; j++) {
thearray[0][keeptrack++] = 'X';
printf("%d", keeptrack);
}
if (num[i+1] == '0') {
keeptrack--;
for (int j = 0; j < howlong; j++) {
thearray[j][keeptrack] = 'X';
}
}
}
}
}
for (int i = 0; i < howlong; i++) {
for (int j = 0; j < keeptrack; j++) {
printf("%c", thearray[i][j]);
}
printf("\n");
}
}