以下题目仅为个人思路,如果有错的地方还请指出。
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)内未检测核酸且未完全接种疫苗的外地人员;
红色报警:红码人员 或 最后一次核酸检测为阳性的人员。
请设计程序,判断检测如下人员会出发多少次黄色和红色报警。
输入说明:
第一行,人员数量