欢迎来到我的算法与代码笔记(建设中)

在这里记录学习之旅,分享编程心得,用二次元的活力激发灵感!

开始阅读

随笔标题一

简要摘要介绍,方便读者快速了解文章主要内容。

随笔标题二

简要摘要介绍,方便读者快速了解文章主要内容。

计算器(模拟)

问题 F: 计算器 (monitor)

Tweetuzki 准备买一个计算器。
这个计算器上面的数字让 Tweetuzki 看着非常不习惯, Tweetuzki 喜欢7节型数字:

可是购买来的计算器不具备切换功能,于是 Tweetuzki 又找到了你,他将给你一串整数,希望你能将他们转换成规定尺寸的7节型数字。

输入

每组测试点包含多组数据。
每组测试数据一行包含2个整数size,num。size表示尺寸,num表示要你转换的数字。
最后一行以size=num=0结束。

输出

对于每组测试数据,输出一个整数,表示你转换过后的数字。
每组测试数据间有一个空行。

样例输入

2 12345
3 67890
0 0

样例输出

-- -- --
| | | | | |
| | | | | |
-- -- -- --
| | | | |
| | | | |
-- -- --
--- --- --- --- ---
| | | | | | | |
| | | | | | | |
| | | | | | | |
--- --- ---
| | | | | | | |
| | | | | | | |
| | | | | | | |
--- --- --- ---

提示

num <= 10^8, size <= 10

分析

数字可以分成五部分,每部分可以简单分成两类,横线和竖线,注意每个数的结构和每组的换行

代码

#define int long long
inline void p_hen(int sz,int j) { //打印横线,按照数字上部分分类
if (j == 1 || j == 4) { //顶为空的情况
for (int i = 0;i < sz+2;++i) cout << ' ';
}
else { //顶为横线的情况
cout << ' ';
for (int i = 0;i < sz;++i)
cout << '-';
cout << ' ';
}
}
inline void p_shu(int sz,int j) { //打印竖线,按照数字上部分分类
if (j == 1 || j == 2 || j == 3 || j == 7) { //左空右线类
for (int i = 0;i < sz+1;++i) cout << ' ';
cout << '|';
}else if (j == 4 || j == 8 || j == 9 || j == 0) { //左右都有线类
cout << '|';
for (int i = 0;i < sz;++i) cout << ' ';
cout << '|';
} else { //左线右空类
cout << '|';
for (int i = 0;i < sz+1;++i) cout << ' ';
}
}
cow row[N],col[N];
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int sz;
string num;
while (cin >> sz >> num && (sz || num != "0")) {
for (int i = 0;i < num.size();++i) { //顶上部分
p_hen(sz,num[i]-'0'); cout << ' ';
}
cout << '\n';
for (int j = 0;j < sz;++j) { //上部分
for (int i = 0;i < num.size();++i) {
p_shu(sz,num[i]-'0');cout << ' ';
}
cout << '\n';
}
for (int j = 0;j < num.size();++j) { //中间部分
int t = num[j]-'0';
if (t == 4) t = 2;
else if (t == 7 || t == 0) t = 1;
p_hen(sz,t); cout << ' ';
}
cout << '\n';
for (int i = 0;i < sz;++i) { //下部分
for (int j = 0;j < num.size();++j) {
int t = num[j]-'0';
if (t == 2) t = 5;
else if (t == 5) t = 2;
else if (t == 6) t = 4;
else if (t == 9) t = 2;
else if (t == 4) t = 1;
p_shu(sz,t);
cout << ' ';
}
cout << '\n';
}
for (int i = 0;i < num.size();++i) { //底部
int t = num[i] - '0';
if (t == 7) t = 1;
p_hen(sz,t);cout << ' ';
}
cout << "\n\n";
}
}
posted @   bakul  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示