题
- 1、 门牌号
- 2、卡片
- 3、分数
1、 门牌号
https://www.lanqiao.cn/problems/592/learning/
解法一:暴力遍历
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...scan.close();int count = 0;for(int i = 1 ; i <= 2020 ; i++) {int num = i;while(num > 0) {if(num % 10 == 2) {count++;}num /= 10;}}System.out.println(count);}
}
解法二:遍历从1~2020,将每个数字转化为字符串,遍历字符串,记录有多少个‘2’
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int count = 0;for(int i = 0;i <= 2020; i++){String str = String.valueOf(i);for(int j = 0;j < str.length(); j++){if(str.charAt(j) == '2')count++;}}System.out.print(count);scan.close();}
}
2、卡片
https://www.lanqiao.cn/problems/1443/learning/
解法:先创建一个元素个数为10数组,使数组每个元素初始化为2021,从1开始计数,数字里有的数字对应的数组下标-1,直到要减的数字对应数组下标的值已<0,停止程序。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main
{public static void main(String[] args) {int num[]= new int[10];for(int i = 0 ; i< 10; i++ ) {num[i]=2021;}int temp=0;int b = 0;for(int i=1;;i++){temp=i;while(temp!=0){b=temp%10;num[b]--;if(num[b]<0){System.out.println(i-1);return;}temp=temp/10;}}}
}
3、分数
https://www.lanqiao.cn/problems/610/learning/
解法一:运用数学知识,分为分子和分母,依次计算
public class Main
{public static void main (String[] args){int firstfm = 1, firstfz = 1;int num = 0;for (int i = 1; i < 20; i++){firstfm *= 2;firstfz += firstfm;}System.out.printf ("%d/%d\n",firstfz,firstfm);}
}
解法二:根据逻辑推理,直接得出答案
public class Main
{public static void main (String[] args){System.out.printf (39/20);}
}