1 日期计算
题目描述:
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们
之间的天数为两天
输入:
有多组数据,每组数据有两行,分别表示两个日期,形式为 YYYYMMDD
输出:
每组数据输出一行,即日期差值
样例输入:
20110412
20110422
样例输出:
11
1 package Test; 2 //不用data类了,已经被更新为更好用的LocalDate类,适用于jdk8以上的版本 3 import java.time.LocalDate; 4 import java.time.format.DateTimeFormatter; 5 import java.time.temporal.ChronoUnit; 6 import java.util.Scanner; 7 8 public class Main{ 9 public static void main(String[] args) { 10 Scanner sc=new Scanner(System.in); 11 while(sc.hasNext()){ 12 //设定输入的字符串时间格式,并把字符串转换为时间 13 LocalDate ld1=LocalDate.parse(sc.next(),DateTimeFormatter.ofPattern("yyyyMMdd")); 14 LocalDate ld2=LocalDate.parse(sc.next(),DateTimeFormatter.ofPattern("yyyyMMdd")); 15 System.out.println(ld1.until(ld2, ChronoUnit.DAYS)+1);//计算二者相差时间 16 } 17 } 18 }
2 进制转换
- 题目描述:
-
求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。
- 输入:
-
输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
数据可能存在包含前导零的情况。
- 输出:
-
可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。
- 样例输入:
-
15 Aab3 7
- 样例输出:
-
210306
1 package Test; 2 3 import java.util.Scanner; 4 5 public class Main{ 6 public static void main(String[] args) { 7 Scanner sc=new Scanner(System.in); 8 while(sc.hasNext()){ 9 int a=sc.nextInt(); 10 String str=sc.next();//输入的数用字符串存储 11 int b=sc.nextInt(); 12 int res=Integer.parseInt(str,a);//把输入的字符串换 13 为整数 14 System.out.println(Integer.toString(res,b).toUpperCase());//把里面的字母转换为大写,输出格式要求的 15 } 16 } 17 }
2 又一版A+B
输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。
输入:
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
当m为0时输入结束。
输出:
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。
样例输入:
8 1300 48
2 1 7
0
样例输出:
2504
1000
1 package Test; 2 3 import java.util.Scanner; 4 5 public class Main{ 6 public static void main(String[] args) { 7 Scanner sc=new Scanner(System.in); 8 while(sc.hasNext()){ 9 int m=sc.nextInt(); 10 if(m==0) break; //直接跳出,程序结束了 11 long a=sc.nextInt(); 12 long b=sc.nextInt(); 13 // Long是long的封装,是一个对象类型而long是基本的数据类型 14 System.out.println(Long.toString(a+b,m));//这里进制转换就没有考虑大小写,根据不同题目要求而定 15 } 16 } 17 }