Submission
Status:
PPPPPPPPPPPPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: darz
Problemset: Abacus
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-05 19:30:16
#include <bits/stdc++.h>
using namespace std;
int cnt_dit(int n){
if(n ==0) return 0;
return 1 + cnt_dit(n/10);
}
int main(){
int n;cin>>n;
vector<vector<char>> arr(10,vector<char>(15));
//set up array
for(int i=0;i<10;i++){
if(i+1==4){
for(int k=0;k<15;k++) arr[i][k] = '-';
}
else if(i==0 || i==1 || i+1 >= 6){
for(int k=0;k<15;k++){
if(k%2==0) arr[i][k] = '*';
else arr[i][k] = ' ';
}
}
else{
for(int k=0;k<15;k++) arr[i][k] = ' ';
}
}
//1 3 5 7 9 11 13 15
int digit = cnt_dit(n);
for(int i=0;i<cnt_dit(n);i++){
int ind = 15 - abs(2*digit-1);
int s = pow(10,digit);
int x = (n % s/(pow(10,digit-1)));
int num_up = x/5;
int num_dow = x%5;
if(num_up > 0){
swap(arr[1][ind],arr[2][ind]);
}
if(num_dow > 0){
for(int l=0;l<num_dow;l++){
swap(arr[4+l][ind],arr[4+l+1][ind]);
}
}
digit--;
}
//show final result
for(int i=0;i<10;i++){
for(int j=0;j<15;j++) cout << arr[i][j];
if(i==3) cout << "--";
cout << "\n";
}
}