day27—编程题

1.第一题

1.1题目

描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号

1.2思路

day27—编程题_第1张图片

  1. 两个数异或:相当于每一位相加,而不考虑进位
  2. 两个数相与左移一位:相当于每一位相加,只考虑进位

1.3解题

public class Solution {
    public int Add(int num1,int num2) {
        while(num2 != 0){
            int n = num1 ^ num2;//保存不进位数字
            int m = (num1 & num2) << 1;//保存进位数字
            num1 = n;
            num2 = m;
        }
        return num1;
    }
}

2.第二题

2.1题目

描述:
给定三条边,请你判断一下能不能组成一个三角形。
输入描述:
输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。
输出描述:
对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。

2.2思路

  1. 三角形的性质是:任意两边之和大于第三边
  2. 由于边长的范围过大,所以这里我们使用BigDecimal

2.3解题

import java.util.Scanner;
import java.math.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            BigDecimal a = sc.nextBigDecimal();
            BigDecimal b = sc.nextBigDecimal();
            BigDecimal c = sc.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");
            }
        }
    }
}

你可能感兴趣的:(每日一题,java,算法,开发语言)