Help me in solving LOOP6V2 problem

Problem Link: CodeChef: Practical coding for everyone
Learning course: Learn C++

My code

``````#include <bits/stdc++.h>
using namespace std;
int main() {

int num;
int fact = 1;

cin >> num;
for(int a = num; a >= 2; a = a--)
{
fact = fact * a;
}
cout << "The factorial of the given number is: " << fact << endl;

return 0;
}
``````

My issue

why time limit excedded in this way and not in (–a) in the for loop i think the are same in this condition’

``````#include<bits/stdc++.h>
using namespace std;
int main(){
int num;
cin>>num;
int x=1;
int y=1;
while(x<=num){
y*=x;
x++;
}
cout<<"The factorial of "<<num<<" is :"<<y;
return 0;
}
``````

When you do `a = a--`, what happens is that `a` is decremented by 1, but the previous value is still assigned to the new variable. So in effect the value of `a` is never changing in this loop.

For `a = --a`, here also the value is decremented by 1 and the new value is assigned to `a`. Thus `a` keeps decreasing.

An easy way to understand this is by using two different variables. Run these two codes by yourself to see.

``````int a = 2;
int b = a--;
cout<<b<<'\n'; // b will be 2
``````
``````int a = 2;
int b = --a;
cout<<b<<'\n'; // b will be 1
``````