add: 230218-CN
This commit is contained in:
parent
da93f6229e
commit
9c89a0e22f
|
|
@ -0,0 +1,69 @@
|
||||||
|
#include <vector>
|
||||||
|
#include <numeric>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
class CustomFunction {
|
||||||
|
public:
|
||||||
|
int f(int x, int y);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1237. Find Positive Integer Solution for a Given Equation
|
||||||
|
* Given a callable function f(x, y) with a hidden formula and a value z, reverse engineer the formula and return all positive integer pairs x and y where f(x,y) == z. You may return the pairs in any order.
|
||||||
|
*
|
||||||
|
* While the exact formula is hidden, the function is monotonically increasing, i.e.:
|
||||||
|
*
|
||||||
|
* f(x, y) < f(x + 1, y)
|
||||||
|
* f(x, y) < f(x, y + 1)
|
||||||
|
* The function interface is defined like this:
|
||||||
|
*
|
||||||
|
* interface CustomFunction {
|
||||||
|
* public:
|
||||||
|
* // Returns some positive integer f(x, y) for two positive integers x and y based on a formula.
|
||||||
|
* int f(int x, int y);
|
||||||
|
* };
|
||||||
|
* We will judge your solution as follows:
|
||||||
|
*
|
||||||
|
* The judge has a list of 9 hidden implementations of CustomFunction, along with a way to generate an answer key of all valid pairs for a specific z.
|
||||||
|
* The judge will receive two inputs: a function_id (to determine which implementation to test your code with), and the target z.
|
||||||
|
* The judge will call your findSolution and compare your results with the answer key.
|
||||||
|
* If your results match the answer key, your solution will be Accepted.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
static std::vector<std::vector<int>> findSolution(CustomFunction& cf, int z) {
|
||||||
|
std::vector<int> p(1000);
|
||||||
|
std::iota(p.begin(), p.end(), 1);
|
||||||
|
auto L = std::lower_bound(p.begin(), p.end(), z, [&](int x, int y) {
|
||||||
|
return cf.f(x, 1000) < y;
|
||||||
|
}), R = std::upper_bound(p.begin(), p.end(), z, [&](int x, int y) {
|
||||||
|
return cf.f(y, 1) > x;
|
||||||
|
});
|
||||||
|
std::vector<std::vector<int>> ret;
|
||||||
|
std::for_each(L, R, [&](int x) {
|
||||||
|
auto L2 = std::lower_bound(p.begin(), p.end(), z, [&](int m, int n) {
|
||||||
|
return cf.f(x, m) < n;
|
||||||
|
}), R2 = std::upper_bound(p.begin(), p.end(), z, [&](int m, int n) {
|
||||||
|
return cf.f(x, n) > m;
|
||||||
|
});
|
||||||
|
std::for_each(L2, R2, [&](int y) {
|
||||||
|
ret.push_back({x, y});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int CustomFunction::f(int x, int y) {
|
||||||
|
return x * y;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
CustomFunction f;
|
||||||
|
auto ret = Solution::findSolution(f, 5);
|
||||||
|
for (auto p : ret)
|
||||||
|
std::cout << p[0] << ", " << p[1] << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.24)
|
||||||
|
PROJECT(2302)
|
||||||
|
|
||||||
|
SET(CMAKE_CXX_STANDARD 23)
|
||||||
|
|
||||||
|
ADD_EXECUTABLE(2302 230218-CN.cpp)
|
||||||
|
|
@ -16,7 +16,7 @@ ENDIF()
|
||||||
# Optimisation
|
# Optimisation
|
||||||
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast -march=native -mtune=native -finline-functions -ffast-math -fomit-frame-pointer")
|
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast -march=native -mtune=native -finline-functions -ffast-math -fomit-frame-pointer")
|
||||||
|
|
||||||
ADD_EXECUTABLE(leetcode-cpp main.cpp 2302/230218.cpp)
|
ADD_EXECUTABLE(leetcode-cpp main.cpp 2302/230218.cpp 2302/230218-CN.cpp)
|
||||||
|
|
||||||
# ADD_SUBDIRECTORY(2112)
|
# ADD_SUBDIRECTORY(2112)
|
||||||
# ADD_SUBDIRECTORY(2201)
|
# ADD_SUBDIRECTORY(2201)
|
||||||
|
|
@ -26,5 +26,6 @@ ADD_EXECUTABLE(leetcode-cpp main.cpp 2302/230218.cpp)
|
||||||
# ADD_SUBDIRECTORY(2205)
|
# ADD_SUBDIRECTORY(2205)
|
||||||
# ADD_SUBDIRECTORY(2206)
|
# ADD_SUBDIRECTORY(2206)
|
||||||
# ADD_SUBDIRECTORY(2207)
|
# ADD_SUBDIRECTORY(2207)
|
||||||
ADD_SUBDIRECTORY(2210)
|
# ADD_SUBDIRECTORY(2210)
|
||||||
|
ADD_SUBDIRECTORY(2302)
|
||||||
ADD_SUBDIRECTORY(more)
|
ADD_SUBDIRECTORY(more)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue