计算器(模拟)
问题 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"; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现