大数阶乘的程序算到34就不行了,

大数阶乘的程序算到34就不行了,求助!!
求各位前辈牛人帮忙看一下小弟写的求阶乘的程序为什么算到34!以后就不对了(0到33都没问题)
#include<vector>
#include<iostream>
using namespace std;
void main()
{
cout << "This is a program for calculating n!" << endl;
    int n,m,sum;
cout << "Please enter n = " ;
cin >> n;
vector<int> fact;
vector<int>::iterator iter;
fact.push_back(1);
for(int i = 1 ; i <= n ; i++)
{
m = 0;
for(iter = fact.begin() ; iter != fact.end()-1 ; iter++)
{
sum = m + (*iter)*i;
*iter = sum%10;
m = sum/10;
}
sum = m + (*iter)*i;
        if (sum >= 10)
{
*iter = sum%10;
fact.push_back(sum/10);
}
else
*iter = sum;
}
cout<< n << "!= ";
for(iter = fact.end()-1 ; iter != fact.begin() ; iter--)
cout << *iter;
cout << *fact.begin() << endl;
}
vector iterator

------解决方案--------------------
退出循环的时候sum可能大于100。
要我就这么写:

for(iter = fact.begin() ; iter != fact.end() ; iter++)
{
  m += *iter;
  *iter %= 10;
  m /= 10;
}
while(m > 0)
{
  fact.push_back(m%10);
  m /= 10;
}