2015秋季校園招聘 IT公司筆試題

1.奇虎360 9.15

1.因數分解


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Num=1000;
int zhishu[1000];
int calculateZhishu(){
//	zhishu=(int*)malloc(sizeof(int)*Num);
	Num=1;
	zhishu[0]=2;
	for(int i=3;i<1000;i++){
		bool flag=true;
		for(int j=0;j<Num;j++){
			if(i%zhishu[j]==0){
				flag=false;
				break;
			}
		}
		if(flag){
			zhishu[Num]=i;
			Num++;
		}
	}
}
void testzhishu(){
	calculateZhishu();


	for(int i=0;i<20;i++)
	{
		printf("%d\n",zhishu[i]);
	}
}
int dictv1[10]={1,0,1,1,0,1,1,1,1,1};
int dictv2[10]={0,0,1,1,0,1,1,0,1,1};
int dictv3[10]={1,0,1,1,0,1,1,0,1,1};
int dicth1[20]={1,1,0,1,0,1,0,1,1,1,  1,0,1,0,0,1,1,1,1,1};
int dicth2[20]={1,1,0,1,1,0,0,1,0,1,  0,1,1,1,0,1,1,1,0,1};


int yinshu[20];
int ysNum[20];
int ysTotal=0;
char str[32];
char temp[32];
void fenjie(int number){
	
	for(int i=0;i<20;i++){
		yinshu[i]=0;
		ysNum[i]=0;
	}
	strset(str,0);
	int count=0;
	ysTotal=0;
	for(int i=0;i<Num;i++){
		count=0;
		while(number%zhishu[i]==0){
			number=number/zhishu[i];
			//ysNum++;
			count++;
			sprintf(temp,"%d*",zhishu[i]);
			strcat(str,temp);
		}
		/*if(count>0){
			ysTotal++;
			yinshu[ysTotal-1]=zhishu[i];
			ysNum[ysTotal-1]=count;
			sprintf(temp,"%d*",zhishu[i]);
			strcat(str,temp);
		}*/
	}
	str[strlen(str)-1]=0;
}
void ppprint(int number,int level){
	int *dict;
	switch(level)
	{
		case 0:
			dict=dictv1;
		
	}
	int len=1;
	int nn=number;
	while(nn/10>=1){
		len++;
		nn=nn/10;
	}
	
}
void show(){


//	int level=0;
	for(int level=0;level<5;level++){
		for(int i=0;i<strlen(str);i++)
		{
			char c=str[i];
			//printf("%c %d\n",c,c-'0');
			if(c>='0'&&c<='9'){
					switch(level){
						case 0:
							printf(" ");
							if(dictv1[c-'0'])printf("-");
							else printf(" ");
							printf(" ");
							break;
						case 1:
	
							if(dicth1[2*(c-'0')])printf("|");
							else{
								printf(" ");
							}
							printf(" ");
							if(dicth1[2*(c-'0')+1])printf("|");
							else{
								printf(" ");
							}
							break;
						case 2:
							printf(" ");
							if(dictv2[c-'0'])printf("-");
							else printf(" ");
							printf(" ");
							break;
						case 3:
						
							if(dicth2[2*(c-'0')])printf("|");
							else{
								printf(" ");
							}
							printf(" ");
							if(dicth2[2*(c-'0')+1])printf("|");
							else{
								printf(" ");
							}
							break;
						case 4:
							printf(" ");
							if(dictv3[c-'0'])printf("-");
							else printf(" ");
							printf(" ");
							break;				
					}
			}
			else{
				if(level==2){
					printf(" * ");
				}else
				{
					printf("   ");
				}
			}	
		}
		printf("\n");
	}
}
int main(){
	calculateZhishu();
	int N;
	//testzhishu();


	while(scanf("%d",&N)!=EOF){
			fenjie(N);
			printf("%s\n",str);
	//printf("%s %d\n",str,strlen(str));
		show();
	}
}

2.華爲

1.字符去除重複並排序

import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner cin = new Scanner(System.in);
		String str;
		str=cin.next();
		int flags[]=new int[256];
		for (int i=0;i<str.length();i++){
			char c=str.charAt(i);
			flags[c]=1;
			
		}
		for(int i=0;i<256;i++){
			if(flags[i]==1){
				char c=(char) i;
				System.out.print(c);
			}
		}
		System.out.println();
	}

}

2.判斷身份證合法性

import java.util.Scanner;


public class Main2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner cin = new Scanner(System.in);
		String str;
		str=cin.next();
		boolean end=false;
		int days[]={31,28,31,30,31,30,31,31,30,31,30,31};
		while(!(str.length()==1&&Integer.parseInt(str)==0)){
			int len=str.length();
			end=false;
			if(len!=18){
				System.out.println(1);
				end=true;
				str=cin.next();
				continue;
			}
			else{
				for(int i=0;i<17;i++){
					char c=str.charAt(i);
					if(c>='0'&&c<='9'){
						continue;
					}
					else
					{
						System.out.println(2);
						end=true;
						break;
					}
				}
				if(end){
					str=cin.next();
					continue;
				}
				else{
					char c=str.charAt(17);
					if(!(c=='x'||c>='0'&&c<='9')){
						System.out.println(3);
						end=true;
						str=cin.next();
						continue;
					}
				}
				
				/ech year
				String yearStr=str.substring(6,10);
				int year=Integer.parseInt(yearStr);
				if(year>2100||year<1900){
					System.out.println(4);
					str=cin.next();
					continue;
				}
				/eck month
				String monthStr=str.substring(10,12);
				int month=Integer.parseInt(monthStr);
				if(month>12||month<1){
					
					System.out.println(5);
					str=cin.next();
					continue;
				}
				/ech days
				String dayStr=str.substring(12,14);
				int day=Integer.parseInt(dayStr);
				boolean special=false;
				if(year%400==0||year%4==0&&year%100!=0){
					special=true;
				}
				if(month==2){
					if(special){
						if(day!=29){
							System.out.println(6);
							str=cin.next();
							continue;
						}
					}else{
						if(day!=days[month-1]){
							System.out.println(6);
							str=cin.next();
							continue;
						}
					}
				}else{
					if(day>=days[month-1]||day<=0){
						System.out.println(6);
						str=cin.next();
						continue;
					}
				}
			}
			
			System.out.println(0);
			end=true;
			str=cin.next();
			continue;
		}
	}

}

3.CD-Key編碼

import java.util.Scanner;


public class Main3 {

	public static String getLowbits(int num,int len){
		String str="";
		for (int i=0;i<len;i++){
			int bit=((num>>i)&1);
			char cbit=(char) ('0'+bit);
			str=cbit+str;
		}
		//System.out.println(str);
		return str;
	}
	public static int bitsToInt(String str){
		int value=0;
		for(int i=0;i<str.length();i++){
			
			int bit=str.charAt(i)-'0';
			value=value+(int) (bit*Math.pow(2, str.length()-1-i));
			/alue=value+(int) (bit*Math.pow(2, i));
			
		}
		//System.out.println(str+" "+value);
		return value;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		String str;
		//str=scanner.next();
		int a,b,c;
		String sa,sb,sc;
		String dict="23456789ABCDEFGHJKLMNPQRSTUVWXYZ";

		a=scanner.nextInt();
		b=scanner.nextInt();
		c=scanner.nextInt();
		sa=getLowbits(a,16);
		sb=getLowbits(b,16);
		sc=getLowbits(c,16);
		String loopstr=sa+sb+sc;
		//System.out.println(loopstr);
		
		int len=48;
		int index=0;
		String temp="";
		String res="";
		for(int i=0;i<5*14;i++){
			index=i%48;
			temp=loopstr.charAt(47-index)+temp;
			if(temp.length()==5){
				int dictInd=bitsToInt(temp);
				res=res+dict.charAt(dictInd);
				temp="";
			}
			else{
				
			}
		}
		/eck code
		int sum=0;
		for (int i=0;i<14;i++){
			sum=sum+(int)res.charAt(i);	
		}
		String checkstr=getLowbits(sum,10);
		int index1=bitsToInt(checkstr.substring(0, 5));
		int index2=bitsToInt(checkstr.substring(5, 10));
		//System.out.println(index1);
		//System.out.println(index2);
		res=res+dict.charAt(index2);
		res=res+dict.charAt(index1);
		
		
		String result="";
		result=result+res.substring(0, 4)+"-"+res.substring(4,8)+"-"+res.substring(8,12)+"-"+res.substring(12,16);
		System.out.println(result);
	}

}



發佈了111 篇原創文章 · 獲贊 86 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章