第一题:完全平方数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Long n=sc.nextLong();
for(Long i = 2L;i * i <= n;i ++)
{
while(n % (i * i) == 0) n /= i * i;
}
System.out.println(n);
}
}
每次都除掉一个平方,最后剩下的余数就是这个数的x 最小 乘 n 的数。
第二题:GCD
package 最新.真题.第六届;
import java.util.Scanner;
public class gcd002 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
long a= scan.nextLong();
long b = scan.nextLong();
long c = Math.abs(a-b);// Math.abs返回数的绝对值
long d = c-a%c;
System.out.println(a+","+b+","+c+","+d);
System.out.println(d);
}
}
输入两个数取除,连个数的相减的绝对值,再用c-a%b 得出第一个尽可能大的公约数的k ;
第三题:完全日期
package 最新.java12届国赛;
import java.util.Arrays;
public class 完全日期 {
//日期魔板 进行日期模拟
static int mm[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
static int y = 2001, m = 1, d = 1, count = 0;
public static void main(String[] args) {
while (y != 2022 || m != 1 || d != 1) {
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) {
mm[2] = 29;
} else {
mm[2] = 28;
}
if (check())
count++;
d++;
if (d > mm[m]) {
d = 1;
m++;
}
if (m > 12) {
m = 1;
y++;
}
}
System.out.println(count);
}
static boolean check() { // 进行平方判断
int sum = 0;
String[] str = (y + "" + m + "" + d).split("");
for (int i = 0; i < str.length; i++) {
sum += Integer.parseInt(str[i]);
}
String ff = Math.sqrt(sum) + "";
String ff1 = ff.substring(ff.indexOf(".") + 1);
if (ff1.equals("0"))
return true;
return false;
}
}