“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情”
第一题
内容理解
求一个数的数位和,再若其大于十,再求一个数的数位和,求到该数位和小于十为止,然后输出
输入
案例的第一行输入整数、,其中
输出
输出对应的整数
思路
诚然,按照我对题目的理解去求没什么问题,也可以过,我当时做完也没有去理会了,但当我在力扣看到258. 各位相加时,我的记忆又被唤醒了,于是我打开“题解”栏,看到了官方题解的第二条,我大呼震撼,感觉到了数学的神奇。这种方法代码很简单,但关键是要找到数字根(我们题目要求的答案正是基于此)的规律:一个数的数字根就是该数求余9的答案。我们只需要在此基础上,对0和9的倍数的情况(力扣那道有对0的判断,但是这里取值范围没有0)进行判断就可以了
代码
import java.util.Scanner;
public class DMCA {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
System.out.println(x%9==0?9:x%9);
}
}
第二题
内容理解
给出一个长度为的正整数数组(),找出那个与数组其他数不相同的数并输出其下标
输入
第一行输入整数表示案例的个数、,其中 案例的第一行输入整数、,其中 案例的第二行输入个整数代表数组元素,其中 本题的输入全部符合要求,没有错误情况判断
输出
输出一个整数——表示那个与众不同的数的下标
思路
这道题很简单,但是我觉得在训练简单思维题的时候不能只满足于解出题目,还要提供不同的思路出来才可以。那么这里我提供两个思路:一个是一次循环遍历,第一个数跟后两个比较,中间的数跟旁边两个比较,最后一个跟它的前面两个比较,用于比较的三个数中若有一个与其他两个不相等,那么它就是我们要找的数;还有一种思路是先把数组排序,那么我们要找的数要么在第一个,要么在最后一个,把这个数找出来,然后再在原来的数组中遍历,直接找到它的下标即可。
代码
import java.util.Arrays;
import java.util.Scanner;
public class Spy_Detected {
//这里提供第二种思路的代码
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int i = 0; i < t; i++) {
int n=sc.nextInt();
int[] x=new int[n];
int[] y=new int[n];
for(int j=0;j<n;j++){
x[j]=sc.nextInt();
y[j]=x[j];
}
Arrays.sort(y);
int index=0;
if(y[0]!=y[1])
index=y[0];
else
index=y[n-1];
for(int j=0;j<n;j++)
{
if(x[j]==index)
{
System.out.println(j+1);
break;
}
}
}
}
}