1006. Clumsy Factorial
作者:互联网
仅供自己学习
思路:
因为这个是有一定规律的使用运算符,那么就存在一定周期,所以我们就可以考虑一个数conut通过模这个周期来判断此时可以用哪个运算符。又因为这是滞后计算,那么就用栈。
我们从N这个数往0减小,我们可以知道从第一个数 相乘到加上最后一个数,总共有4个数,那周期就为4.首先对于相乘的数,如果N=10,那么将10放入栈,然后N--为9,令count=0,此时0%4=0,这就是用乘法的条件,将N与栈顶元素相乘,然后N--为8,count++为1,1%4=1,此时栈顶元素除以N,然后2%4=2,就将N加入栈中.3%4=3作为加入-N的条件。可以把10-1的所有数列出来,然后按照这规律,会得到正确的结果。
按照上面的规律,最后栈里存放的就是所有乘除后得到的结果,接下来只需要把栈的元素全部取出来求和即可。
代码:
class Solution {
public:
int clumsy(int N) {
stack<int> st;
st.push(N);
N--;
int count=0;
while(N>0){
if(count%4==0) st.top()*=N;
else if(count%4==1) st.top()/=N;
else if(count%4==2) st.push(N);
else st.push(-N);
N--;
count++;
}
int res=0;
while(!st.empty()){
res+=st.top();
st.pop();
}
return res;
}
};
标签:count,Clumsy,Factorial,res,top,st,--,int,1006 来源: https://www.cnblogs.com/Mrsdwang/p/14605792.html