import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int n=2020;
int count=0;
while(n!=0){
int t=n;
while(t!=0){
if(t%10==2) count++;
t/=10;
}
n--;
}
System.out.println(count);
scan.close();
}
}
答案:624
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
int count=0;
for(int i=1;i<=2020;i++){
for(int j=1;j<=2020;j++){
if(1==gcd(i,j)) count++;
}
}
System.out.println(count);
}
public static int gcd(int i,int j){
if(i%j==0) return j;
return gcd(j,i%j);
}
}
答案:2481215
注意:
①主方法使用了static,则另外一个方法也要有static。
②欧几里得算法求最大公约数。快速求得 a和 b 的最大公约数_codepupil的博客-CSDN博客
可知,第n行第n列的数是n^2+(n-1)^2。
import java.util.Scanner;
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
System.out.println(20*20+19*19);
}
}
答案:761
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
int length = 2;//跑步里程,从起始2000.1.1开始算,这一天2km。
//每个月份的天数
int[] monthNum = {0,31,28,31,30,31,30,31,31,30,31,30,31};
//起始2020年1月1日
int month = 1;
int day = 1;
int year = 2000;//年份
int week = 6;//礼拜
while(!(year==2020&&month==10&&day==1)){//未到该日期
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){//闰年的判定。
monthNum[2] = 29;
}else {
monthNum[2] = 28;
}
day++;
week = (week+1) % 7;//取余获得星期几
if(day > monthNum[month]){//过去了一个月
month++;
day = 1;//天数置为1.
if(month > 12){//过去了一年
month = 1;//月数置1
year++;
}
}
if(day == 1 || week == 1){//每月第一天,每周一
length++;
}
length++;
}
System.out.println(length);
}
}
答案:8879
注意:
①如何判定闰年:(year % 4 == 0 && year % 100 != 0) || year % 400 == 0 四年一润,百年不润,四百年一润。
②如何设定每个月的天数: int[] monthNum = {0,31,28,31,30,31,30,31,31,30,31,30,31};
③:跨年或者跨月:月数或者天数置0,年数或者月数++。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = 7 + 10 + 16 + 20 + 19 + 7 + 1;
System.out.println(num);
scan.close();
}
}
答案:80 硬数
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int a = 0, b = 0;
for(int i = 0; i=60)a++;
if(temp>=85)b++;
}
System.out.println(Math.round((float)a*100/n)+"%");
System.out.println(Math.round((float)b*100/n)+"%");
scan.close();
}
}
round() 方法返回一个最接近的 int、long 型值,四舍五入。
round 表示"四舍五入",算法为Math.floor(x+0.5) ,即将原来的数字加上 0.5 后再向下取整,所以 Math.round(11.5) 的结果为 12,Math.round(-11.5) 的结果为 -11。
自己写的:
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str=scan.nextLine();
int count=0;
for(int i=0;i list=new ArrayList<>();
for(char c:arr){
if(!list.contains(c))
list.add(c);
}
return list.size();
}
}
因为是n^2时间复杂度,爆了
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
char[] a=scan.next().toCharArray();
int[] pre=new int[a.length];
for(int i=0;i-1&&a[j]!=a[i]){
j--;
}
pre[i]=j;
}
long count=0;
for(int i=0;i