【牛客 - 181B】送分题(另类求解a+b,二分)

163 篇文章 1 订阅
117 篇文章 0 订阅

题干:
 

对于一套题来说,没有一道送分题,就很不符合常理,但是我又懒得写送分题,所以你可以直接复制以下代码,即可ac本题.

  1. #include<cstdio>#include<iostream>  using namespace std; int a,b,c;  int main(){long long l=1,r=int(1e9)<<1:cin》a>>b;while(r-l>1){c=(l+r)>>1;if(c-b<a)l=c;else if(c-b>a)r=c;else return printf("%d\n",c); }     if(l!=r)return printf("%d\n",r);      }

输入描述:

输入共一行,两个整数a和b,范围在int之间

输出描述:

输出一个整数表示答案

示例1

输入

复制

5 123

输出

复制

128

备注:

喵喵喵

解题报告:

复制代码,修 bug。提交,发现 wa。

仔细分析一下代码,发现就是个a+b的求解过程,之所以会wa,就是因为范围是int!需要考虑负数!

或者直接交a+b就可以了。

AC代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;

ll a,b,c;
int main() {
	long long l=-10000000000,r=10000000000;
	cin>>a>>b;
	while(r-l>1) {
		c=(l+r)>>1;
		if(c-b<a)l=c;
		else if(c-b>a)r=c;
		else {
			printf("%lld\n",c);return 0 ;
		}
	}
	if(l!=r){
		printf("%lld\n",r);
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值