zoukankan      html  css  js  c++  java
  • XX公司在线笔试题编程题之一

    题目:

    #include <iostream>
    #include <vector>
    #include <string>
    #include <list>
    #define N 1000005
    using namespace std;
    
    bool prime[N]={0};
    vector<int> ps;  // 存放1到N内所有素数
    
    void fenjie(vector<int> & suyinzi, int x){  // 素因子分解
    	for(int i=0;i<ps.size();i++){
    		while(x % ps[i] ==0){
    			suyinzi.push_back(ps[i]);
    			x /=ps[i];
    		}
    	}
    
    }
    
    char str[5][31]={
    	"*-*****-**-*****-**-**-**-**-*",
    	"|*|*|***|**||*||**|****||*||*|",
    	"*******-**-**-**-**-*****-**-*",
    	"|*|*|*|****|**|**||*|**||*|**|",
    	"*-*****-**-*****-**-*****-**-*"
    };
    char print[5][4*1000]={0}; // 打印缓冲区
    
     
    void set(int col, char ch){  //从col列开始设置要显示的字符
    	if(ch == '*'){
    		for(int i=0;i<5;i++) print[i][col] = ' ';
    		print[2][col] = '*';
    		return;
    	}
    	for(int i =0;i<5;i++) 
    		for(int j=0;j<3;j++){
    			char temp=str[i][(ch-'0')*3 + j];
    			print[i][col+j] = temp == '*' ? ' ' : temp;
    		}
    	 
    }
    void set(int col, string str){ ///从第col列开始,设置要显示的字符串
    	set(col,'*');
    	col ++;
    	for(int i=0;i<str.size();i++){
    		set(col,str[i]);
    		col += 3;
    	}
    
    }
    string convert(int x){  //将整数转为字符串
    	list<char> li;
    	while(x!=0){
    		li.push_front(x%10 + '0');
    		x /= 10;
    	}
    	string str(li.begin(),li.end());
    	return str;
    	
    }
    int main()
    {	 
    	for(int i=2;i<1000;i++){
    		if(prime[i]) {
    			continue;
    		}		 
    		for(int j=i+i;j<N;j+=i)
    			prime[j] =1;
    	}
    	for(int i =2;i< N;i++ ) if(!prime[i]) ps.push_back(i);	
    	int x;
    	while(cin >> x){
    		vector<int> suyinzi;
    		vector<string> vstr;
    		fenjie(suyinzi,x);
    		for(int i=0;i<suyinzi.size();i++){
    			vstr.push_back(convert(suyinzi[i]));
    		}
    
    		int count = suyinzi.size(),col=0;
    		::memset(print, 0,sizeof(print));
    		for(int i=0;i<vstr.size();i++){
    			set(col,vstr[i]);
    			col += vstr[i].size()*3+1;
    		}
    		
    		for(int i=0;i<5;i++){
    			for(int j=1;j<col;j++)
    				cout << print[i][j];
    			cout << endl;
    		}
     
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    HD2058The sum problem
    采用循环链表结构求解约瑟夫问题
    java线性表学习笔记(二)
    java线性表学习笔记(一)
    HD1004Let the Balloon Rise
    HD1005Number Sequence
    用c++库函数轻松解决回文问题
    accelerated C++ 中查找url(学习笔记)
    C++ 之关联容器 map
    pytorch 迁移学习[摘自官网]
  • 原文地址:https://www.cnblogs.com/gaoyanqing/p/4811619.html
Copyright © 2011-2022 走看看