日期问题
输入描述
一个日期,格式是 “AA/BB/CCAA/BB/CC” (0 \leq A, B, C \leq 90≤A,B,C≤9)。
输出描述
输出若干个不相同的日期,每个日期一行,格式是 “yyyy-MM-ddyyyy−MM−dd”。多个日期按从早到晚排列。
输入输出样例
示例
输入
02/03/04
输出
2002-03-04
2004-02-03
2004-03-02
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String temp=scanner.next();
String date[]=temp.split("/");
String y=date[0],m=date[1],d=date[2],
yMd=(Integer.parseInt(y)<60?"20"+y:"19"+y)+"-"+m+"-"+d,
mDy=(Integer.parseInt(d)<60?"20"+d:"19"+d)+"-"+y+"-"+m,
dMy=(Integer.parseInt(d)<60?"20"+d:"19"+d)+"-"+m+"-"+y;
TreeSet<String> set = new TreeSet<String>();
if(f(yMd)) set.add(yMd);
if(f(mDy)) set.add(mDy);
if(f(dMy)) set.add(dMy);
//02/03/04
for (Object object : set) {
System.out.println(object);
}
}
static boolean f(String date){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
format.setLenient(false);
try {
format.parse(date);
}catch (Exception e){
return false;
}
return true;
}
}
学习 判读日期有效
static boolean f(String date){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
format.setLenient(false);
try {
format.parse(date);
}catch (Exception e){
return false;
}
return true;
}
}
format.setLenient(false);
该方法是用来控制是否将正确格式的不正确时间转化成正确的时间,默认为true,设置为false时,如果时间不正确,不会自动转化,而是抛出java.text.ParseException异常。
学习 整数取整
System.out.println(Math.round(yx/1.00/n*100)+"%");
//Math.round是向下取整的函数 原理为+0.5再向下取整
大数字问题
你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 11 个棋盘格放 11 粒麦子,在第 22 个棋盘格放 22 粒麦子,在第 33 个棋盘格放 44 粒麦子,在第 44 个棋盘格放 88 粒麦子,…后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有 6464 格)。
国王以为他只是想要一袋麦子而已,哈哈大笑。
当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!
请你借助计算机准确地计算,到底需要多少粒麦子。
import java.math.BigInteger;
import java.util.Iterator;
public class Main {
public static void main (String[] arge) {
BigInteger a =new BigInteger("0");
BigInteger b = new BigInteger("2");
for (int i = 0; i < 64; i++) {
a = a.add(b.pow(i));
}
System.out.println(a);
}
}
学习 大数字BigInteger使用
import java.math.*;
BigInteger a , b;
a=cin.nextBigInteger();
b=cin.nextBigInteger();
BigInteger ans_add,ans_sub,ans_mul,ans_div,ans_mod;
ans_add = a.add(b); //a+b
ans_sub = a.subtract(b); //a-b
ans_mul = a.multiply(b); //a*b
ans_div = a.divide(b); //a/b
ans_mod = a.mod(b); //a%b
System.out.println("a + b = "+ans_add);
System.out.println("a - b = "+ans_sub);
System.out.println("a * b = "+ans_mul);
System.out.println("a / b = "+ans_div);
System.out.println("a % b = "+ans_mod);
k倍区间
学习 同余数的思想
四平方和数
https://www.lanqiao.cn/problems/122/learning/