注:由于本人能力有限,只能做出部分。如果以下代码有任何错误,麻烦指正,谢谢!!!
1.分解质因数
输入:
3 10
输出:
3=3 4=2*2 5=5 6=2*3 7=7 8=2*2*2 9=3*3 10=2*5
代码:
/*1.分解质因数*/
import java.util.Scanner;public class Main {
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
int a=in.nextInt();
int b=in.nextInt();
for (int i = a; i <=b; i++) {
System.out.print(i+"="); //打印等号左边
int k=2;//质素是从2开始的
int num=i;//用一个变量来代替i
while (num>k){ //判断num是否到了不可分解的时候
if (num%k==0){//能被分解的
System.out.print(k+"*");
num=num/k;
}else { //不能分解的就k++
k++;
}
}
System.out.println(k);//4=2*2
}
}
}
2.梦中的等差数列
输入:
1 2 3
输出:
9
代码:
/*
T389789 23年比赛:2.梦中的等差数列
*/
import java.util.Arrays;
import java.util.Scanner;public class Main {
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
int a=in.nextInt();
int b=in.nextInt();
int c=in.nextInt();
int[] ints = new int[6];
/*
等差数列求和
x:首项
y:公差
z:项数公式:(首项+末项)*项数/2
sum=(2*x*z+z*z*y-zy)/2
分6种情况带入求最值
*/
ints[0]=(2*a*c+c*c*b-b*c)/2;//abc
ints[1]=(2*a*b+b*b*c-b*c)/2;//acb
ints[2]=(2*b*c+b*b*a-a*c)/2;//bac
ints[3]=(2*b*a+a*a*c-a*c)/2;//bca
ints[4]=(2*c*b+b*b*a-a*b)/2;//cab
ints[5]=(2*c*a+a*a*b-a*b)/2;//cba
Arrays.sort(ints);
System.out.println(ints[5]);
}
}
3.质数游戏
输入:
5 3 2 5 6 2 7
输出:
2
代码:
/*3.质数游戏*/
import java.util.Scanner;
public class Main {
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
int n=in.nextInt();
int k=in.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i]=in.nextInt();
}//以上是初始化过程
int count=0;//计算次数
for (int i = 0; i <n-k+1 ; i++) {//因为是字串且字串长度为
int sum=0;//用来统计字串的和
int l=i;//用一个变量来指向位置
for (int j = 0; j < k; j++) {//长度是多少就循环多少次
sum+=a[l];//求和
l++;
}
//判断是不是质数
if (is_primse(sum)){
count++;
}}
System.out.println(count);
}
//判断一个数是否是质数
public static boolean is_primse(int n){
for (int i = 2; i*i<n ; i++) {
if (n%i==0){
return false;
}
}
return true;
}
}
4.NiceDay
输入:
3 2020/02/02 2020/12/31 4130/03/14
输出:
No No Yes
代码:
/* 4.NiceDay */
import java.util.Arrays;
import java.util.Scanner;public class Main {
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
int n=in.nextInt();
String[] s = new String[n];
String[] a = new String[3];
for (int i = 0; i < n; i++) {
s[i]=in.next();
a=s[i].split("/");
s[i]=a[0]+a[1]+a[2];
}
for (int i = 0; i < n; i++) {
if (is_hefatian(s[i])&&is_huiwen(s[i])&&is_teshutian(s[i])){
System.out.println("Yes");
}else {
System.out.println("No");
}
}}
//判断是否是回文
public static boolean is_huiwen(String s){
for (int i = 0; i < 4; i++) {
if(s.charAt(i)!=s.charAt(s.length()-1-i)){
return false;
}
}
return true;
}
//判断合法天
public static boolean is_hefatian(String s){
int n=Integer.valueOf(String.valueOf(s.charAt(0)+s.charAt(1))+s.charAt(2)+s.charAt(3));
int y=Integer.valueOf(String.valueOf(s.charAt(4)+s.charAt(5)));
int r=Integer.valueOf(String.valueOf(s.charAt(6)+s.charAt(7)));
if(y>12&&y<1){
return false;
}
return true;
}
//判断每个月的日数
public static boolean Swich(int n,int y,int r){
switch (r){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(r<=31&&r>=1){
return true;
}
break;
case 2:if (is_runnian(n)){
if(r<=29&&r>=1){
return true;
}
}else {
if(r<=28&&r>=1){
return true;
}
}
break;
case 4:
case 6:
case 9:
case 11:
if(r<=30 && r>=1){
return true;
}
break;
default:
break;
}return true;
}
//判断闰年
public static boolean is_runnian(int year){
if ((year % 4 == 0 && year % 100 != 0)|| (year % 400 == 0)) {
return true;
}else{
return false;
}
}
//判断特殊天
public static boolean is_teshutian(String s){
int[] a= new int[]{0,0,0,0,0,0,0,0,0,0};//创建一个数组保存0-9出现的次数
for (int i = 0; i < 8; i++) {
char b=s.charAt(i);//字符串第i个字符
switch (b){//判断b是那个字符,就在对应的a[i]++
case '0':a[0]++;break;
case '1':a[1]++;break;
case '2':a[2]++;break;
case '3':a[3]++;break;
case '4':a[4]++;break;
case '5':a[5]++;break;
case '6':a[6]++;break;
case '7':a[7]++;break;
case '8':a[8]++;break;
case '9':a[9]++;break;
}
}
Arrays.sort(a);//对数组里的次数排序,这个函数是从小到大排
if (a[9]>=3){//判断最大的数字是否超过2次
return false;
}else {
return true;
}
}
}
7.统计天数
输入:
8 12 130
输出:
15
代码:
/*
7.统计天数
*/
import java.util.Scanner;public class Main {
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
int a=in.nextInt();//1-5每天做的题数
int b=in.nextInt();//6-7每天做的题数
int n=in.nextInt();
int week=n/(5*a+2*b);//完整的周数
int c=week%(5*a+2*b);//剩下的题数
int count=0;//算天数
for (int i = 0; i < 7; i++) {
if(c<=0){
break;//判断是否超过了
}
if (i<5){
c-=a;
count++;
}else {
c-=b;
count++;
}
}
System.out.println(7*week+count);
}}