一、拆分各数字求平方和,若最终结果为1则此数为"快乐数字"
来源:多益网络 2018秋招笔试题,
【注意:编译器不使用Scanner类】
原题目:
/**
* 快乐数字:
* 1.输入一个数字
* 2.判断拆分各位数,求平方和
* 3.最终结果为1则返回true,否则返回false
* 例如:
* input:19
* 1^2 + 9^2 = 82
* 8^2 + 2^2 = 68
* 6^2 + 8^2 = 100
* 1^2 + 0 + 0 = 1
* @author Leonardo
*
*/
tips:
InputStreamReader 是字节流通向字符流的桥梁;
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。
例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
思路:
若num = 4,或所有平方和+=4,出现死循环,不快乐了
若num = 1,或所有平方和+=1,快乐起来鸭~
package DuoYi;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class FunnyNum2 {
public static void main(String[] args) throws NumberFormatException, IOException {
int num = 0;
int temp = 0;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.println("输入一个数字");
num = Integer.parseInt(bufferedReader.readLine().trim());
while (num != 1 && num != 4) {
while (num != 0) {
temp += (num % 10) * (num % 10);
num /= 10;
}
num = temp;
temp = 0;
}
if (num == 1) {
System.out.println("true");
} else if (num == 4) {
System.out.println("false");
}
}
}
}
二、IQIYI笔试题 ——幸运ID
原题目:
/**
* 求幸运ID:
* 1.长度为6,都是数字
* 2.操作一次,替换一位数字
* 3.前3位之和 == 后3位之和,为幸运ID
* 若小明随机输入6位数字,操作几次变为幸运ID?
*
* input: 000018
* output: 1【更改一次,前3某位数变为9】
*
* @author Leonardo
*/
public class LuckyID {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String[] str = sc.next().split("");
// 前3与后3之和
int front = 0;
for(int i = 0; i<3; i++){
front += Integer.parseInt(str[i]);
}
int after = 0;
for(int i = 3; i<6; i++){
after += Integer.parseInt(str[i]);
}
// System.out.println(after+","+front);
int diff = front - after;
if(diff == 0){
System.out.println("0");
}else if(diff<=9 && diff>=-9){
System.out.println("1");
}else if(diff<=18 && diff>=-18){
System.out.println("2");
}else if(diff<=27 && diff>=-27){
System.out.println("3");
}
}
}