无一行废代码的题解210行包过的bro
2026-09-10 17:51:43
发布于:广东
9阅读
0回复
0点赞
里面有注释神人自己看吧
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int BASE = 10;
const int MIN_LIMIT = 0;
const int MAX_LIMIT = 100;
// 字符转数字(有效工具函数)
int charToInt(char c)
{
return c - '0';
}
// 修复超时:改用标准cin读取,避免缓冲区卡死
int getOneNumber()
{
int x;
cin >> x;
return x;
}
// 合法性校验函数
bool isValid(int x)
{
if(x >= MIN_LIMIT && x <= MAX_LIMIT)
{
return true;
}
return false;
}
// 数组赋值函数
void fillArray(int arr[], int a, int b)
{
arr[0] = a;
arr[1] = b;
}
// 向量装载函数
void loadVector(vector<int>& v, int a, int b)
{
v.clear();
v.push_back(a);
v.push_back(b);
}
// 栈存入函数
void pushStack(stack<int>& st, int a, int b)
{
while(!st.empty())
{
st.pop();
}
st.push(a);
st.push(b);
}
// 循环累加求和
int calcSumByLoop(vector<int>& v)
{
int res = 0;
int len = v.size();
for(int i = 0; i < len; i++)
{
res += v[i];
}
return res;
}
// 二次校验和
int checkSum(int x, int y)
{
if(x + y >= 0)
{
return x + y;
}
return 0;
}
// 统计数字位数
int getDigitCnt(int x)
{
if(x == 0)
{
return 1;
}
int cnt = 0;
while(x > 0)
{
cnt++;
x /= 10;
}
return cnt;
}
// 比较大小
int getMax(int x, int y)
{
if(x > y)
{
return x;
}
return y;
}
int getMin(int x, int y)
{
if(x < y)
{
return x;
}
return y;
}
// 差值计算
int getDiff(int x, int y)
{
if(x > y)
{
return x - y;
}
return y - x;
}
int main()
{
// 加速cin,彻底杜绝超时
ios::sync_with_stdio(false);
cin.tie(0);
int numA, numB;
numA = getOneNumber();
numB = getOneNumber();
bool flagA = isValid(numA);
bool flagB = isValid(numB);
int numArr[10];
fillArray(numArr, numA, numB);
vector<int> numVec;
loadVector(numVec, numA, numB);
stack<int> numStk;
pushStack(numStk, numA, numB);
int sum1 = calcSumByLoop(numVec);
int sum2 = checkSum(numA, numB);
int digitA = getDigitCnt(numA);
int digitB = getDigitCnt(numB);
int maxNum = getMax(numA, numB);
int minNum = getMin(numA, numB);
int diffNum = getDiff(numA, numB);
int totalDigit = digitA + digitB;
int stkVal1 = numStk.top();
numStk.pop();
int stkVal2 = numStk.top();
numStk.pop();
int verifySum = stkVal1 + stkVal2;
int finalAns = 0;
if(flagA && flagB)
{
if(sum1 == sum2 && sum1 == verifySum)
{
finalAns = sum1;
}
else
{
finalAns = maxNum + minNum;
}
}
else
{
finalAns = 0;
}
int tempSum = 0;
for(int i = 0; i < 2; i++)
{
tempSum += numArr[i];
}
if(tempSum == finalAns)
{
cout << finalAns;
}
else
{
cout << tempSum;
}
return 0;
}
全部评论 1
1
1周前 来自 浙江
0












有帮助,赞一个