一.不用加减乘除做加法
题目链接:
题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
数据范围:两个数都满足 −10≤n≤1000
进阶:空间复杂度 O(1),时间复杂度 O(1)
输入描述:
无
输出描述:
无
示例1:
输入:
1,2
输出:
3
示例2:
输入:
0,0
输出:
0
个人总结:
没区别 另类加法
代码实现:
import java.util.*;
public class Solution {
public int Add(int num1, int num2) {
while (num2 != 0) {
//进位
int add = (num1 & num2) << 1;
//不进位加法
num1 = num1 ^ num2;
//进位信息赋值给num2
num2 = add;
}
return num1;
}
}
二.三角形
题目链接:
题目描述:
给定三条边,请你判断一下能不能组成一个三角形。
输入描述:
输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。
输出描述:
对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。
示例1:
输入:
1 2 3
2 2 2
输出:
No
Yes
个人总结:
主打一个BigInteger的用法吧,因为数据太大了。
代码实现:
import java.util.*;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger[] bigInt = new BigInteger[3];
while (sc.hasNext()) {
for (int i = 0; i < 3; i++) {
bigInt[i] = sc.nextBigInteger();
}
Arrays.sort(bigInt);
if (bigInt[0].add(bigInt[1]).compareTo(bigInt[2]) > 0) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
}