题目一:
题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的
天数为两天
输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
每组数据输出一行,即日期差值
示例1
输入
20110412
20110422
输出
11
import java.io.*;
public class Main {
static int[] mon1 = {0,31,59,90,120,151,181,212,243,273,304,334};
static int[] mon2 = {0,31,60,91,121,152,182,213,244,274,305,335};
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String date1 = br.readLine();
String date2 = br.readLine();
int year1 = Integer.parseInt(date1.substring(0, 4));
int year2 = Integer.parseInt(date2.substring(0, 4));
int month1 = Integer.parseInt(date1.substring(4, 6));
int month2 = Integer.parseInt(date2.substring(4, 6));
int day1 = Integer.parseInt(date1.substring(6, 8));
int day2 = Integer.parseInt(date2.substring(6, 8));
int sum1 = getDay(year1, month1, day1);
int sum2 = getDay(year2, month2, day2);
System.out.println(Math.abs(sum1-sum2)+1);
}
public static int getDay(int year, int month, int day) {
int sum = 0;
for(int i = 1; i < year; i++) {
if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) sum += 366;
else sum += 365;
}
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) sum += mon2[month];
else sum += mon1[month-1];
sum += day;
return sum;
}
}
题目二:
题目描述
存在两组数组,和4个数字a,b,c,d,要求做如下操作,将第一个数组第a个数到第b个数,第二个数组的第c个数到第d个数放到一个数组中,求出合并后数组的中间值,如果有两个中间值,取下标较小的那个。
输入描述:
第一行两个整数,表示两个数组的长度,
接下来两行表示两个数字的值,
最后一行有四个整数a,b,c,d。
数组长度不会超过1000000。
输出描述:
每行一个整数,对应合并数组的下标在中间的那个值。
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String[] args){
try {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
br.readLine();
String[] parts1 = br.readLine().split(" ");
String[] parts2 = br.readLine().split(" ");
String[] parts3 = br.readLine().split(" ");
int[] lens = {Integer.parseInt(parts3[0]), Integer.parseInt(parts3[1]), Integer.parseInt(parts3[2]), Integer.parseInt(parts3[3])};
int n = (lens[3] + lens[1] - lens[2] - lens[0] + 3)/2;
if(n-(lens[1]-lens[0]+1) > 0) System.out.println(parts2[n-(lens[1]-lens[0]+1)+lens[2]-2]);
else System.out.println(parts1[n+lens[0]-2]);
} catch (IOException e) {
e.printStackTrace();
}
}
}
题目三:
题目描述
输入一行字符串,计算其中A-Z大写字母出现的次数
输入描述:
案例可能有多组,每个案例输入为一行字符串。
输出描述:
对每个案例按A-Z的顺序输出其中大写字母出现的次数。
示例1
输入
DFJEIWFNQLEF0395823048+_+JDLSFJDLSJFKK
输出
A:0
B:0
C:0
D:3
E:2
F:5
G:0
H:0
I:1
J:4
K:2
L:3
M:0
N:1
O:0
P:0
Q:1
R:0
S:2
T:0
U:0
V:0
W:1
X:0
Y:0
Z:0
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String[] args){
try {
BufferedReader br = new BufferedReader(new BufferedReader(new InputStreamReader(System.in)));
char[] ch = br.readLine().toCharArray();
int[] count = new int[26];
for(int i = 0; i < ch.length; i++) {
int n = ch[i] - 'A';
if(n>=0&&n<26) count[n]++;
}
for(int i = 0; i < 26; i++) {
System.out.println((char)(i+'A')+":"+count[i]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}