目录
一、不用加减乘除做加法
二、三角形
一、不用加减乘除做加法
题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
数据范围:两个数都满足 -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");}
}
如有建议或想法,欢迎一起学习讨论~