【Java版oj】day27不用加减乘除做加法、三角形
目录
(1)原题再现
(2)问题分析
(3)完整代码
二、三角形
(1)原题再现
(2)问题分析
(3)完整代码
一、不用加减乘除做加法
(1)原题再现
不用加减乘除做加法__牛客网
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
输入
1,2
输出
3
输入
0,0
输出
0
(2)问题分析
这道题的解析直接指路day09不用加号的加法【Java版oj】day09不用加号的加法、走方格的方案数_小熊爱吃软糖吖的博客-CSDN博客
(3)完整代码
public class Solution {public int Add(int num1, int num2) {//^得无进位的相加,&进位情况int add = (num1 & num2)<<1;int num = num1 ^ num2;while (add != 0) {int tmp=num;num = num ^ add;add = (add & tmp)<<1;}return num;} }
![]()
二、三角形
(1)原题再现
三角形__牛客网
给定三条边,请你判断一下能不能组成一个三角形。
输入描述:
输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。
输出描述:对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。
示例1输入
1 2 3
2 2 2
输出
No
Yes
(2)问题分析
求三角形的条件就是两边之和大于第三边,本题给出的数据范围真的超级大,关键在于对大正数的处理。
指路☞:【Java】关于你不知道的Java大整数运算之BigInteger类超级好用!!!_小熊爱吃软糖吖的博客-CSDN博客
(3)完整代码
import java.math.BigInteger; import java.util.Arrays; import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNextBigInteger()) { // 注意 while 处理多个 caseBigInteger []triangle = new BigInteger[3];for (int i = 0; i < 3; i++) {triangle[i] = sc.nextBigInteger();}Arrays.sort(triangle);if (triangle[0].add(triangle[1]).compareTo(triangle[2]) > 0) {System.out.println("Yes");} else {System.out.println("No");}}} }