CCF 201509 前两题 Java解法

1.数列分段

问题描述

  给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?

输入格式

  输入的第一行包含一个整数n,表示数列中整数的个数。
  第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。

输出格式

  输出一个整数,表示给定的数列有多个段。

样例输入

8
8 8 8 0 12 12 8 0

样例输出

5

样例说明

  8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。

扫描二维码关注公众号,回复: 12683995 查看本文章

评测用例规模与约定

  1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。

 Java代码

import java.util.*;
public class Main2015091 {
	public static void main(String [] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		
		int [] a = new int [n];
		int temp = -1;
		int count = 0;
		for(int i=0;i<n;i++) {
			a[i] = scan.nextInt();
			if(temp!=a[i]) {
				temp=a[i];
				count++;
			}
		}
		System.out.println(count);
	}

}

2.数列分段

问题描述

  给定一个年份y和一个整数d,问这一年的第d天是几月几日?
  注意闰年的2月有29天。满足下面条件之一的是闰年:
  1) 年份是4的整数倍,而且不是100的整数倍;
  2) 年份是400的整数倍。

输入格式

  输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
  输入的第二行包含一个整数dd在1至365之间。

输出格式

  输出两行,每行一个整数,分别表示答案的月份和日期。

样例输入

2015
80

样例输出

3
21

样例输入

2000
40

样例输出

2
9

 Java代码

import java.util.*;
public class Main2015092 {
	public static void main(String [] args) {
		Scanner scan = new Scanner(System.in);
		int year = scan.nextInt();
		int num = scan.nextInt();
		
		int [] months = {0,1,2,3,4,5,6,7,8,9,10,11,12};//下标即月份
		int [] days = {0,31,28,31,30,31,30,31,31,30,31,30,31};
		int month = 0;
		int day = 0;
		for(int i=1;i<13;i++) {
			month = months[i];
			if(num>days[i]) {
				if(isleap(year)&&(i==2)) {
					num-=(months[i]+1);
				}else {
					num-=days[i];
				}
			}else {
				day = num;
				break;
			}
			
		}
		System.out.println(month);
		System.out.println(day);
	}
	public static boolean isleap(int year) {
		if((year%4==0&&year%100!=0)||year%400==0)
			return true;
		else
			return false;
	}

}

猜你喜欢

转载自blog.csdn.net/paranior/article/details/108636511