Submission
Status:
-PPP------
Subtask/Task Score:
30/100
Score: 30
User: PureIsSoFuckingCute
Problemset: กราฟสัญญาณดิจิทัล
Language: cpp
Time: 0.002 second
Submitted On: 2026-09-28 00:08:08
#include <iostream>
#include <string>
#include <bitset>
using namespace std;
string signalFV(string binary,int size);
string continueSignal(string binary,int size);
string signalZV(string binary,int size);
string ascii_toBinary(string ascii);
int main()
{
string binary;
int size;
cin >> binary >> size;
string ascii = ascii_toBinary(binary);
for (int i=0;i<size;i++) {
if (i==0) {
if (binary[0] >= 65 && binary[0] <=122) {
cout << signalFV(ascii,size) << "\n";
}
else {
cout << signalFV(binary,size) << "\n";
}
}
else if (i == size-1) {
if (binary[0] >= 65 && binary[0] <=122) {
cout << signalZV(ascii,size) << "\n";
}
else {
cout << signalZV(binary,size) << "\n";
}
}
else {
if (binary[0] >= 65 && binary[0] <=122) {
cout << continueSignal(ascii,size) << "\n";
}
else {
cout << continueSignal(binary,size) << "\n";
}
}
}
}
string signalFV(string binary,int size)
{
int n = binary.length();
string biDigit = "x";
for (int i=0;i<n;i++) {
if (binary[i] == '1') {
biDigit.append(size-1 , 'x');
}
else {
if (i + 1 < n && binary[i+1] == '1') {
biDigit.append(size-2 , '_');
biDigit += 'x';
}
else {
biDigit.append(size-1,'_');
}
}
}
return biDigit;
}
string continueSignal(string binary,int size)
{
int n = binary.length();
string row = "";
for (int i=0;i<n;i++) {
int chunkLen = (i==0) ? size : size-1;
string chunk(chunkLen, '_');
if (i == 0; binary[0] == '0') {
chunk[0] = 'x';
}
if (i < n-1 && binary[i] != binary[i+1]) {
chunk[chunkLen-1] = 'x';
}
row += chunk;
}
return row;
}
string signalZV(string binary,int size)
{
int n = binary.length();
string row = "";
for (int i=0;i<n;i++) {
int digitSize = (i == 0) ? size : size-1;
string biDigit;
if (binary[i] == '0') {
biDigit = string(digitSize , 'x');
}
else if (i < n-1 && binary[i+1] == '0') {
biDigit = string(digitSize-1 , '_') + "x";
}
else {
biDigit = string(digitSize , '_');
}
row += biDigit;
}
return row;
}
string ascii_toBinary(string ascii)
{
string sBin = "";
for (int i=0;i<ascii.length();i++) {
int demi = static_cast<unsigned char>(ascii[i]);
bitset<8> binary(demi);
sBin += binary.to_string();
}
return sBin;
}