题目:*~不用加减乘除做加法
题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
题解:
1.二进制位相异或的结果就是两个数对应位相加的结果,不考虑进位
2.二进制与后左移一位的结果,就是两个数相加进位后的结果
两个数相加,如果不考虑进位,那么这两个数异或的值就是这两个数的和
public class Solution {
public int Add(int num1,int num2) {
while(num2!=0){
int a=num1 ^ num2;
int b=(num1& num2)<<1;
num1=a;
num2=b;
}
return num1;
}
}
题目:*~三角形
给定三条边,请你判断一下能不能组成一个三角形。
输入描述: 输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。
输出描述: 对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。
import java.util.*;
import java.math.*;
public class Main{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
while(scan.hasNext()){
BigDecimal a=scan.nextBigDecimal();
BigDecimal b=scan.nextBigDecimal();
BigDecimal c=scan.nextBigDecimal();
if(a.add(b).compareTo(c)>0 &&
a.add(c).compareTo(b)>0 &&
b.add(c).compareTo(a)>0){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
}
}