计挑赛初赛试题(2021)(Java组)

以下题目仅为个人思路,如果有错的地方还请指出。

16.从大于等于N的正整数里找到一个最小的数M,使之满足:M和M的逆序数(如1230的逆序数为321)的乘积为一个[100000000,200000000]区间内的值。
输入说明:起始数字N;
输出说明:找到的第一个符合条件的数,如果没有符合条件的数,输出F。
输入样例:123456
输出样例:124100

解题思路:我觉得唯一要考虑的就是什么时候输出F,我当时的想法是如果两个数是6位数相乘一定超出区间了,所以判断条件设为了大于200000,感觉不怎么对

import java.util.*;

public class Main{
    public static void main(String[] args){
    	Scanner sc=new Scanner(System.in);
    	long m=sc.nextInt();
    	while(true) {
    		long n=++m;
    		//把它变成字符串
    		String s=n+"";
    		String[] s1=s.split("");
    		long w=0;
    		int index=0;
    		//变成逆序
    		for (int i = s1.length-1,j=1; i >=0; i--,j*=10) {
    			w+=Integer.parseInt(s1[index])*j;
    			index++;
    		}
    		if (m*w>=100000000&&m*w<=200000000) {
				System.out.println(m);
				break;
			}
    		//我这里想的是,如果是两个6位数相乘结果一定超出所给区间了
    		if (m>200000) {
				System.out.println("F");
				break;
			}
    	}
    }
}

17.某地大数据防疫平台记录了往来的所有防疫相关信息,包括 本地或外地人员、健康码颜色、接种疫苗情况、最近一次核酸结果、最近一次核酸检测时间等。
为此,该地某区域如果检测到满足如下条件的人员进入,将触发对应报警:
黄色报警:黄码人员 或 3天(天数<3)内未检测核酸且未完全接种疫苗的外地人员;
红色报警:红码人员 或 最后一次核酸检测为阳性的人员。
请设计程序,判断检测如下人员会出发多少次黄色和红色报警。
输入说明:

第一行,人员数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1while(true){learn}

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值