题
- 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);
}
}