Java题目训练——不用加减乘除做加法和三角形

目录

一、不用加减乘除做加法

二、三角形


一、不用加减乘除做加法

题目描述:

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

数据范围:两个数都满足 -10<=n<=1000

进阶:空间复杂度 O(1),时间复杂度O(1)

示例

示例1

输入:1,2

输出:3

示例2

输入:0,0

输出:0

题目解析:

        本题要求不使用+,-,*,/实现加法,那我们首先想到的就是利用位运算符来实现,首先可以利用^(或)求得没有进位的相加结果,然后利用&(与)运算求得进位的位(需要左移一位),再次相加,直到进位结果为0,求得相加结果。

import java.util.*;
public class Solution {
    public int Add(int num1,int num2) {
        //没有加进位的和
        int add = num1;
        //进位
        int carry = num2;
        //进位
        while(carry != 0){
            int temp = add ^ carry;
            carry = (add & carry) << 1;
            add = temp;
        }
        return add;
    }
}

二、三角形

题目描述:

给定三条边,请你判断一下能不能组成一个三角形。

输入描述:

输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。

输出描述:

对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。

示例

输入:1 2 3

           2 2 2

输出:No

           Yes

题目解析:

        这道题我们只需要知道组成三角形的限制条件,然后根据这个条件进行判断即可。

        组成三角形的条件是:任意两边之和大于第三边;任意两边之差小于第三边。

        只要满足条件输出Yes,不满足输出No即可。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            double a = scanner.nextDouble();
            double b = scanner.nextDouble();
            double c = scanner.nextDouble();
            isTriangle(a, b, c);
        }
    }

    public static void isTriangle(double a, double b, double c){
        if(a + b > c && Math.abs(a - b) < c ||
            a + c > b && Math.abs(a - c) < b ||
            b + c > a && Math.abs(b - c) < a){
            System.out.println("Yes");
            return;
        }
        System.out.println("No");
    }
}

如有建议或想法,欢迎一起学习讨论~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值