当你学一些可视化程序设计语言时,老师经常会让你设计并且编程做出一个计算器,这时也许你会仿照windows系统自带的计算器外观和功能去设计,但是现在老师要你多做出一个有新功能的计算器,实现当输入一个数时,能够将这个数分解成一个或多个素因子乘积的形式,并按素因子的大小排列显示出来。大家对计算器中数的表示应该很清楚的。下面显示出了0 — 9这十个数字的表示形式。每个数字都占据5 * 3大小的字符区域
你能实现这个新功能吗?试试看吧!
输入
输入有多组测试数据,每组包括一个正整数n(1 < n <= 1000000)。 |
样例输入
10 2 |
输出
对于每个数,将它分解成若干个素数乘积的形式,并按从小到大的顺序输出,素因子之间用“ * ”的形式连接。 |
样例输出
- - | | - * - | | - - - | - | - |
时间限制C/C++语言:1000MS其它语言:3000MS
|
内存限制
C/C++语言:65536KB其它语言:589824KB
|
#include<iostream> #include<stdio.h> using namespace std; char arr[5][1000]; int pos = 0; void printMultiSign() { if (pos != 0) { arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = '*'; arr[3][pos] = ' '; arr[4][pos++] = ' '; } } void NumToArray(int i) { int tmp = 1; while (i / tmp / 10 != 0) { //需要从首位开始输出 tmp *= 10; }; printMultiSign(); while (tmp != 0) { int t = i / tmp % 10; tmp = tmp / 10; switch (t) { case 0 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 1 : arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 2 : arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; break; case 3 : arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 4 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 5 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 6 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 7 : arr[0][pos] = ' '; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 8 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; case 9 : arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = ' '; arr[4][pos++] = ' '; arr[0][pos] = '-'; arr[1][pos] = ' '; arr[2][pos] = '-'; arr[3][pos] = ' '; arr[4][pos++] = '-'; arr[0][pos] = ' '; arr[1][pos] = '|'; arr[2][pos] = ' '; arr[3][pos] = '|'; arr[4][pos++] = ' '; break; } } } void printArray() { arr[0][pos] = '