因输入范围较小,为简便采取暴力轮询
#include <iostream>
#include <list>
using namespace std;
/// @brief 检查该点是否在安全区域内
/// @param x
/// @param y
/// @param limit
/// @return 安全返回true,否则返回false
bool x_y_in_safe(int x, int y, int limit)
{
// 将 x和y 按照10进制分解成数位上的数列表
list<int> x_list;
list<int> y_list;
while (x)
{
int x_digit = x % 10;
x_list.push_front(x_digit);
x /= 10;
}
while (y)
{
int y_digit = y % 10;
y_list.push_front(y_digit);
y /= 10;
}
// 将列表内的数字相加
int x_sum = 0;
int y_sum = 0;
for (const auto &x_ele : x_list)
{
x_sum += x_ele;
}
for (const auto &y_ele : y_list)
{
y_sum += y_ele;
}
int sum = x_sum + y_sum;
if (sum > limit)
return false;
return true;
}
// 寻宝
static void HuaWei_OD_test23(void)
{
int x_axis_max, y_axis_max, limit;
cin >> x_axis_max >> y_axis_max >> limit;
int gold = 0; // 黄金g
for (int x = 0; x < x_axis_max; x++)
{
for (int y = 0; y < y_axis_max; y++)
{
if (x_y_in_safe(x, y, limit))
gold++;
}
}
cout << gold << endl;
}
int main()
{
HuaWei_OD_test23();
return 0;
}