Day6 高精度加减算法+洛谷讲解
高精度加法
来一个小的插曲!是我写一道洛谷题的时候突然发现的
高精度减法
中间插入一个头文件
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int a, b, x, y;
cin >> a >> b >> x >> y;
if (a > b)
{
if (x < y)
{
swap(x, y);
}
}
if (a < b)
{
if (x > y)
{
swap(x, y);
}
}
int dis1 = fabs(a - x);
int dis2 = fabs(b - y);
int sum1 = dis1 + dis2;
int sum2 = fabs(a - b);
if (sum1 > sum2)
{
cout << sum2;
}
else
{
cout << sum1;
}
}
注意到了么?亲爱的同学么,这个是cmath,我第一次的时候是写错了
接下来,我来给大家介绍一道题,这个
该开始拿出这道题我就觉得很眼熟,果不其然,原来是我曾经最迷茫的一道题,我觉得写了两遍,其实无论是对于我自己还是屏幕前的同学们,相信大家都开始慢慢读懂这道题了吧,让我们继续努力吧!!!
#include<iostream>
#include<vector>
#include<cmath>
#include <climits>
int ma_x = INT_MAX;
int arr[1000] = { 0 };
using namespace std;
vector<pair<int, int>>u;
int main()
{
int n;
cin >> n;
if (n == 0)
{
cout << 0;
return 0;
}
if (n == 1)
{
int a, b;
cin >> a >> b;
cout << b - a;
return 0;
}
while (n--)
{
int a, b;
cin >> a >> b;
u.push_back({ a,b });
for (int i = a; i < b; i++)
{
if (arr[i] >=1)
{
arr[i] = 2;
}
else
{
arr[i] = 1;
}
}
}
int leng = 0;
for (int i = 0; i < 1000; i++)
{
if (arr[i] == 1 || arr[i] == 2)
{
//cout << "wei1" << i << endl;
leng++;
}
}
//cout <<"changdu" << leng << endl;
int p = u.size();
int minn = 0;
for (int i = 0; i < p; i++)
{
int lengthh = 0;
for (int j = u[i].first; j < u[i].second; j++)
{
if (arr[j] == 1)
{
lengthh++;
}
}
if (lengthh < ma_x)
{
ma_x = lengthh;
}
}
cout << leng - ma_x;
}