上海交通大学计算机考研复试 2013年(java)

问题一:
题目描述

字典序排序一些二值对,输入形式(k,v),字典序排序一些二值对,输入形式(k,v)

输入描述:

第一行为二值队数量
输入形式(k,v),而且第一个逗号后面可以有0或多个空格,输出时原先有几个就输出几个

输出描述:

同样形式

示例1
输入

2
(2, 23)
(4, 233)

输出

(2, 23)
(4, 233)
import java.util.*;
import java.io.*;
import java.text.* ;
public class Main
{
	static int n;
	static int m;
	static int[][] matrix;
	static int res = Integer.MAX_VALUE;
	static int k;
    public static void main(String[] args){
    	try {
	        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
	        String str;
	        while((str = br.readLine()) != null) {
	        	int n = Integer.parseInt(str);
	        	twoNums[] nums = new twoNums[n];
	        	for(int i = 0; i < n; i++) {
	        		String str2 = br.readLine();
	        		String[] parts = str2.split(",");
	        		int x = Integer.parseInt(parts[0].substring(1));
	        		int count = 0;
	        		for(int j = 0; j < parts[1].length(); j++) {
	        			if(parts[1].charAt(j)==' ') count++;
	        			else break;
	        		}
	        		int y = Integer.parseInt(parts[1].substring(count,parts[1].length()-1));
	        		nums[i] = new twoNums(x, y, str2);
	        	}
	        	Arrays.sort(nums, new Comparator<twoNums>() {
	        		public int compare(twoNums o1, twoNums o2) {
	        			return o1.num2 - o2.num2;
	        		}
	        	});
	        	Arrays.sort(nums, new Comparator<twoNums>() {
	        		public int compare(twoNums o1, twoNums o2) {
	        			return o1.num1 - o2.num1;
	        		}
	        	});
	        	for(int i = 0; i < n; i++) {
	        		System.out.println(nums[i].word);
	        	}
	        }
 	    } catch (IOException e) {
	        e.printStackTrace();
	    }
    }
}
class twoNums{
	int num1;
	int num2;
	String word;
	twoNums(int x, int y, String z){
		num1 = x;
		num2 = y;
		word = z;
	}
}

问题二:
题目描述

给定一个整数 n,返回 n! 结果尾数中零的数量。

输入描述:

一个整数n

输出描述:

n! 结果尾数中零的数量

示例1
输入

10

输出

2
import java.util.*;
import java.io.*;
import java.text.* ;
public class Main
{
	static int n;
	static int m;
	static int[][] matrix;
	static int res = Integer.MAX_VALUE;
	static int k;
    public static void main(String[] args){
    	try {
	        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
	        String str;
	        while((str = br.readLine()) != null) {
	        	int n = Integer.parseInt(str);
	        	System.out.println(trailingZeroes(n));
	        }
 	    } catch (IOException e) {
	        e.printStackTrace();
	    }
    }
    public static int trailingZeroes(int n) {
    	int res = 0;
    	while(n > 0) {
    		res += n/5;
    		n /= 5;
    	}
    	return res;
    }
}

问题三:
题目描述

把一个十进制定点小数(0~1之间)转换为16进制

输入描述:

不限长度

输出描述:

输出要求小数最多32位

示例1
输入

0.1280625

输出

0.21
import java.util.*;
import java.io.*;
import java.text.* ;
import java.math.*;
public class Main
{
	static int n;
	static int m;
	static int[][] matrix;
	static int res = Integer.MAX_VALUE;
	static int k;
    public static void main(String[] args){
    	try {
	        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
	        String str;
	        BigInteger b = new BigInteger("16");
	        HashMap<String, String> map = new HashMap<>();
	        map.put("0","0");
	        map.put("1","1");
	        map.put("2","2");
	        map.put("3","3");
	        map.put("4","4");
	        map.put("5","5");
	        map.put("6","6");
	        map.put("7","7");
	        map.put("8","8");
	        map.put("9","9");
	        map.put("10","A");
	        map.put("11","B");
	        map.put("12","C");
	        map.put("13","D");
	        map.put("14","E");
	        map.put("15","F");
	        while((str = br.readLine()) != null) {
	        	StringBuilder res = new StringBuilder("0.");
	        	String[] parts = str.split("\\.");
	        	BigInteger a = new BigInteger(parts[1]);
	        	int len = parts[1].length();
	        	for(int i = 0; i < 32; i++) {
	        		BigInteger tmp = a.multiply(b);
	        		StringBuilder s = new StringBuilder("1");
	        		for(int j = 0; j < len; j++) {
	        			s.append("0");
	        		}
	        		BigInteger n = new BigInteger(s.toString());
	        		String count = tmp.divide(n).toString();
	        		System.out.println(count);

	        		int num = Integer.parseInt(count);
	        		res.append(map.get(count));
	        		len = tmp.toString().length();
	        		if(num >= 10) len -= 2;
	        		else if(num > 0) len -= 1;
	        		a = tmp.remainder(n);	        		
	        	}
	        	System.out.println(res);
	        }
 	    } catch (IOException e) {
	        e.printStackTrace();
	    }
    }

}

发布了332 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43306331/article/details/105037943
今日推荐