1008 - 软件版本

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

相信大家一定有过在网上下载软件而碰到多个不同版本的情况。一般来说,软件的版本号由三个部分组成,主版本号(Major Version Number),子版本号(Minor Version Number)和修订号(Revision_Number)。当软件进行了重大的修改时,主版本号加一;当软件在原有基础上增加部分功能时,主版本号不变,子版本号加一;当软件仅仅修正了部分bug时,主版本号和子版本号都不变,修正号加一。
在我们比较软件的两个版本的新旧时,都是先比较主版本号,当主版本号相同时再比较子版本号,前两者都相同的情况下再比较修正号。版本号越大的软件越新。
现在,小明在下载软件的时候碰到了两个版本,请你告诉他哪个版本更新一些。

题目输入

输入的第一行有一个整数T,代表有T组测试。接下来有T组测试。
每组测试分两行,第一行有三个整数代表第一个软件版本的主版本号,子版本号和修订号。第二行也有三个整数代表第二个软件版本的主版本号,子版本号和修订号。
数据中出现的整数都在[0,1000]范围之内。

题目输出

对于每组测试,如果第一个软件的版本新点,请输出First,如果第二个软件的版本新点,请输出Second,否则输出Same。

输入/输出样例

输入格式

3
1 1 0
1 1 1
1 1 1
1 1 0
1 1 1
1 1 1

输出格式

Second
First
Same

C语言解答

#include<stdio.h>

int main()
{
	int t,i,a[3],b[3];
	scanf("%d",&t);
	while(t--)
	{
		for(i=0;i<3;i++)
			scanf("%d",&a[i]);
		for(i=0;i<3;i++)
			scanf("%d",&b[i]);
		if(a[0]>b[0])
			printf("First\n");
		else if(a[0]<b[0])
			printf("Second\n");
		else
		{
			if(a[1]>b[1])
				printf("First\n");
			else if(a[1]<b[1])
				printf("Second\n");
			else
			{
				if(a[2]>b[2])
					printf("First\n");
				else if(a[2]<b[2])
					printf("Second\n");
				else
					printf("Same\n");
			}
		}
	}
	return 0;
}

C++解答

#include<stdio.h>

int main()
{
	int t,i,a[3],b[3];
	scanf("%d",&t);
	while(t--)
	{
		for(i=0;i<3;i++)
			scanf("%d",&a[i]);
		for(i=0;i<3;i++)
			scanf("%d",&b[i]);
		if(a[0]>b[0])
			printf("First\n");
		else if(a[0]<b[0])
			printf("Second\n");
		else
		{
			if(a[1]>b[1])
				printf("First\n");
			else if(a[1]<b[1])
				printf("Second\n");
			else
			{
				if(a[2]>b[2])
					printf("First\n");
				else if(a[2]<b[2])
					printf("Second\n");
				else
					printf("Same\n");
			}
		}
	}
	return 0;
}

Java解答

import java.util.Scanner;

public class Main {
	//转换int成为ascii码值
	/*
	 public static char toChar(int prefix){
		return (char) prefix;
	}
	*/
	//输入整型
	/*
	public static int scanfInt(){
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		return sc.nextInt();
	}
	*/
	//输入float
	/*
	public static float scanfFloat(){
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		return sc.nextFloat();
	}
	*/
	//判断字符c是否在set中
	/*
	public static boolean isInSet(char c){
		if(c == 'A' || c == 'B' || c == 'C' || c == 'D' || c == 'F'){
			return true;
		}
		else
			return false;
	}
	*/
	public static String judgeEdition(int i){
		if(i == 0)
			return "Same";
		else if(i == 1)
			return "First";
		else
			return "Second";
	}
	public static void main(String[] args){
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		int flag = sc.nextInt();
		int[][][] edition = new int[flag][2][3];
		int[] result = new int[flag];
		for(int i=0;i<flag;i++){
			edition[i][0][0] = sc.nextInt();
			edition[i][0][1] = sc.nextInt();
			edition[i][0][2] = sc.nextInt();
			edition[i][1][0] = sc.nextInt();
			edition[i][1][1] = sc.nextInt();
			edition[i][1][2] = sc.nextInt();
			//版本号相等
			if(edition[i][0][0] == edition[i][1][0]){
				//子版本号相等
				if(edition[i][0][1] == edition[i][1][1]){
					//修订号相等
					if(edition[i][0][2] == edition[i][1][2]){
						result[i] = 0;
					}
					//第一个修订号大
					else if(edition[i][0][2] > edition[i][1][2]){
						result[i] = 1;
					}
					//第二个修订号大
					else 
						result[i] = 2;
				}
				//子版本号第一个大
				else if(edition[i][0][1] > edition[i][1][1]){
					result[i] = 1;
				}
				//子版本号第二个大
				else
					result[i] = 2;
			}
			//版本号第一个大
			else if(edition[i][0][0] > edition[i][1][0]){
				result[i] = 1;
			}
			//版本号第二个大
			else
				result[i] = 2;
		}//end of for structure
		//display result
		for(int i = 0;i <flag;i++){
			System.out.println(judgeEdition(result[i]));
		}
		
			
		
	}
}

Python解答

#coding = utf-8

import re
import sys

f = sys.stdin;
#f = open('test.in', 'r');

def Process(v1, v2):
	version1 = [];
	version2 = [];
	for var in v1:
		if( '' == var ):
			continue;
		version1 += [var];

	for var in v2:
		if( '' == var ):
			continue;
		version2 += [var];

	# print version1;
	# print version2;
	for i in range(0, 3):
		if( int(version1[i]) > int(version2[i]) ):
			return 'First';
		elif( int(version1[i]) < int(version2[i]) ):
			return 'Second';
	return 'Same';

cas = int(f.readline().split(' ')[0]);
for k in range(0, cas):
	version1 = f.readline().split(' ');
	version2 = f.readline().split(' ');
	print (Process(version1, version2));