首页 > 其他分享 >二分查找(两种模板)/高精度 (加 减) 计算模板(2023/8/30)

二分查找(两种模板)/高精度 (加 减) 计算模板(2023/8/30)

时间:2023-08-30 22:22:38浏览次数:47  
标签:int s2 s1 30 back -- 2023 模板 size

//二分查找(两种模板)

#include<iostream>
using namespace std;
#define N 100001
int a[N];
int main()
{
int n, m; cin >> n >> m;
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
while (m--)
{
int x; scanf("%d", &x);
int l = 0; int r = n - 1;
  while (l < r)
  {
    int mid = (l + r) / 2;//按照左边二分查找
    if (x <= a[mid]) r = mid;//先判断左边
    else l = mid + 1;
  }
 if (a[l] != x) cout << "-1 -1" << endl;
 else
 {
 cout << l << " ";
 int l = 0; int r = n - 1;
   while (l < r)
   {
   int mid = (l + r + 1) / 2;//按照右侧二分查找
   if (x >= a[mid]) l = mid;//先判断右边
   else r = mid - 1;//上加下减
   }
  cout << l << endl;
}

}
return 0;
}





//高精度加法模板

#include<iostream> #include<vector> #include<string> using namespace std; vector<int> Add(vector<int>& a, vector<int>& b) { int t = 0; vector<int>c;//t是余数 for (int i = 0; i < a.size() || i < b.size(); i++) { if(i<a.size()) t += a[i];//a和b一定要分开加,因为位数不确定,没走完的继续加 if(i<b.size()) t += b[i]; c.push_back(t % 10); t /= 10; } if (t) c.push_back(t);//判断最后是否进位,进位加1 return c; } int main() { string s1, s2; vector<int>A, B; cin >> s1 >> s2; for (int i = s1.size() - 1; i >= 0; i--) A.push_back(s1[i]-'0');//注意一定不要忘了减0,不然就不是整数类型了 for (int i = s2.size() - 1; i >= 0; i--) B.push_back(s2[i]-'0'); auto C = Add(A, B);//auto 自动识别类型 for (int i = C.size() - 1; i >= 0; i--) cout << C[i]; cout << endl; }



//高精度减法模板


#include<iostream>
#include<vector>
#include<string>
using namespace std;


bool cmp(string& s1, string& s2)//比较输入的两个数的大小,确定加不加负号
{
  if (s1.size() != s2.size()) return s1.size() > s2.size();
  for (int i = 0; i < s1.size(); i++)
    if (s1[i] != s2[i]) return s1[i] > s2[i];
  return true;
}


vector<int> sub(vector<int>& a, vector<int>& b)
{
  vector<int>c; int t = 0;//t为余数
  for (int i = 0; i < a.size(); i++)
  {
    t = a[i] - t;//这一位减去上一个借位
    if (i < b.size()) t -= b[i];//注意b存在才减去b,不然不减
       c.push_back((t + 10) % 10);//最关键 
    if (t < 0)  t = 1;//看借位
    else  t = 0;
}


while (c.size() > 1 && c.back() == 0) c.pop_back();//去掉前导0
return c;
}


int main()
{
string s1, s2; vector<int>a, b, c;
cin >> s1 >> s2;
for (int i = s1.size() - 1; i >= 0; i--) a.push_back(s1[i] - '0');//记住一定减去‘0’,不然不是整数
for (int i = s2.size() - 1; i >= 0; i--) b.push_back(s2[i] - '0');
if (cmp(s1, s2)) c = sub(a, b);
else c = sub(b, a), cout << "-";//添加负号
for (int i = c.size() - 1; i >= 0; i--) printf("%d", c[i]);
cout << endl;
return 0;
}

 

知识点:::


1、用scanf、printf 速度要快

标签:int,s2,s1,30,back,--,2023,模板,size
From: https://www.cnblogs.com/daimazhishen/p/17668393.html

相关文章

  • 闲话8.30
    今天好像终于没摆了。上午姬芈让vp一张CF,div3的C切不出来我是不是该退役了啊......
  • 8.30日遇到的问题及其解决
    问题1问题描述:在piplist显示没有opencv包,但是可以运行opencv的代码。原因:opencv被编译成了cv2.so文件供python调用解释:参考IndexOut的手动编译opencv生成cv2.so文件供python调用(http://t.csdn.cn/9ujLu)问题2问题描述:安装boost库总是下载失败原因:用的是官方镜像解决:换国......
  • js模板引擎1--制定规则
    本系列文章是学习art-template和template.js的总结。js模板引擎的用法大致如下:模板<ulid="list"></ul><scriptid="test"type="text/template"><%for(vari=0;i<list.length;i++){%><li><%=list[i]......
  • MindSponge分子动力学模拟——定义一个分子系统(2023.08)
    技术背景在前面两篇文章中,我们分别介绍了分子动力学模拟软件MindSponge的软件架构和安装与使用教程。这里我们进入到实用化阶段,假定大家都已经在本地部署好了基于MindSpore的MindSponge的编程环境,开始用MindSponge去做一些真正的分子模拟的工作。那么分子模拟的第一步,我们就需要......
  • 园子的脱困努力-发布会合作:“盛夏作序,万物合鸣”,2023人大金仓新品发布会
    北京人大金仓信息技术股份有限公司(以下简称“人大金仓”)成立于1999年,是成立最早的拥有自主知识产权的国产数据库企业,也是中国电子科技集团(简称“CETC”)成员企业。人大金仓以“提供卓越的数据库产品助力企业级应用高质量发展”为使命,致力于“成为世界卓越的数据库产品与服务提......
  • node18 vue2启动报错 error:0308010C:digital envelope routines::unsupported
    出现原因貌似是因为是因为node17版本开始发布的OpenSSL3.0,而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。解决方法第一种方法降低node版本降低到17以下即可,如项目不能降低版本看后面的解决方式第二种方法设置NODE_OPTIONS环境变量......
  • 30s无痛进入状态
    来源:让状态切换和喝水一样简单,30s停止胡思乱想学习进入状态从听开始。接收内容比思考和输出内容更加容易,人本能会从轻松愉快的事情做起,从只听不做开始,听一个会儿,就会进入状态。提示一来,进入状态。给大脑一个固定提示,只在专注时适合的提示,如古典音乐,学习视频。打开你要看的视频......
  • flask之cbv源码分析,模板,请求与响应,session和源码分析,闪现,请求扩展
    目录1cbv分析1.1源码分析2模板2.1py2.2html3请求与响应4session及源码分析4.1session的使用4.2源码分析4.3session执行原理5闪现6请求扩展1cbv分析#基于类的视图,写法fromflaskimportFlask,requestfromflask.viewsimportView,MethodViewapp=Flask(__......
  • 20230802模拟赛
    20230802模拟赛T1数学题题意令\(A,B,C\)为三个质数(\(A\leqB\leqC\)),\(N=A\timesB\timesC\)。给出\(N(1\leqN\leq10^{14})\),求\(B\)。题解由\(A\leqB\leqC\)可证复杂度直接枚举\(1e7\)个质数,求\(B\)。T2子序列题意给定一个长度为\(n(\leq35)\)的序列:......
  • 【备战金九银十】2023年最全Android岗1000+面试题及答案
    前言马上又准备迎接金九银十了,各大厂,国央企纷纷加入抢人大战竞争尤为激烈!但是,相比求职者来说岗位数量还不是很多,自然而然HR们就开始优中选优,激化“内卷”!如何在众多面试者中脱颖而出?对于很多程序员来说是目前最重要的事。因此本篇通过收集腾讯T4总结的2023年最全的Android岗面试......