Submission
Status:
----------
Subtask/Task Score:
0/100
Score: 0
User: ZanTy
Problemset: กราฟสัญญาณดิจิทัล
Language: cpp
Time: 0.002 second
Submitted On: 2026-10-08 12:34:50
#include<bits/stdc++.h>
using namespace std;
string binaryconvert(char x){
int y = x;
string result;
while (y){
result = result + to_string(y%2);
y /= 2;
}
result = result + '0';
reverse(result.begin(),result.end());
return result;
}
int main(){
string str;
int n;
cin >> str >> n;
vector<char> signal;
bool isBinary = false;
if (str[0] == '0' || str[0] == '1'){
isBinary = true;
}
if (!isBinary){
for (int i = 0;i < str.size();i++){
string binary = binaryconvert(str[i]);
for (int j = 0;j < 8;j++){
signal.push_back(binary[j]);
}
}
}
else {
for (int i = 0;i < str.size();i++){
signal.push_back(str[i]);
}
}
int h = signal.size();
vector<int> sizesignal;
for (int i = 0;i < h;i++){
if (i == 0){
sizesignal.push_back(n);
}
else if (signal[i] != signal[i-1]){
sizesignal.push_back(n);
}
else{
sizesignal.push_back(n-1);
}
}
vector<int> start;
for (int i = 0;i < h;i++){
if (i == 0){
start.push_back(0);
}
else {
if (signal[i] == signal[i-1]){
start.push_back(start[i-1] + sizesignal[i]);
}
else {
start.push_back(start[i-1]-1 + sizesignal[i]);
}
}
}
int floor = n*h - h + 1;
char arr[n][floor];
for (int i = 0;i < n;i++){
for (int j = 0;j < floor;j++){
arr[i][j] = '_';
}
}
if (signal[0] == '0'){
for (int j = 0;j < n;j++){
arr[j][0] = 'X';
}
}
for (int i = 0;i < h;i++){
if (i == h-1){
for (int j = start[i];j < floor;j++){
if (signal[i] == '0'){
arr[n-1][j] = 'X';
}
else {
arr[0][j] = 'X';
}
}
}
else {
for (int j = start[i];j <= start[i+1];j++){
if (signal[i] == '0'){
arr[n-1][j] = 'X';
}
else {
arr[0][j] = 'X';
}
}
}
}
for (int i = 0;i < floor;i++){
if (arr[n-1][i] == arr[0][i]){
for (int j = 0;j < n;j++){
arr[j][i] = 'X';
}
}
}
for (int i = 0;i < n;i++){
for (int j = 0;j < floor;j++){
cout << arr[i][j];
}
cout << '\n';
}
}