计算器的新功能
当你学一些可视化程序设计语言时,老师经常会让你设计并且编程做出一个计算器,这时也许你会仿照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] = '\0'; arr[1][pos] = '\0'; arr[2][pos] = '\0'; arr[3][pos] = '\0'; arr[4][pos] = '\0'; pos = 0; cout << arr[0] << endl; cout << arr[1] << endl; cout << arr[2] << endl; cout << arr[3] << endl; cout << arr[4] << endl; } void sushu(int num) { int i; for(i=2;i<num;) { if(num%i==0) { NumToArray(i); num=num/i; i=2; } else i++; } NumToArray(i); } int main() { int num; while(cin>>num) { sushu(num); printArray(); } }