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";
    }
    
}