1006. 笨阶乘
笨阶乘:用栈模拟就好了
class Solution {
public:
int clumsy(int N) {
stack<int> st;
st.push(N);
N--;
int n = 0;
while(N){
if(n % 4 == 0){
st.top() = st.top() * N;
}
else if(n % 4 == 1){
st.top() = st.top() / N;
}
else if(n % 4 == 2){
st.push(N);
}
else st.push(-N);
N--;
n++;
}
int ans = 0;
while(!st.empty()){
ans += st.top();
st.pop();
}
return ans;
}
};
不笨阶乘:打表/数学推导发现规律
class Solution {
public:
int clumsy(int N) {
if (N == 1) {
return 1;
} else if (N == 2) {
return 2;
} else if (N == 3) {
return 6;
} else if (N == 4) {
return 7;
}
if (N % 4 == 0) {
return N + 1;
} else if (N % 4 <= 2) {
return N + 2;
} else {
return N - 1;
}
}
};