帮忙看下逻辑错误
这个程序里的思想是:结果 += 进位;
进位 = 结果 / 进制(我写的是100进制)
#include<vector>
#include<iostream>
using namespace std;
int main()
{
int b = 0;//进位
vector<unsigned int> arr;//用来存放结果
arr.push_back(1);
cout << "请入所要求阶乘的数" << endl;
int x;
cin >> x;
bool count = false;//用来判断最高位进行乘法后是否有进位
for (int i = 1, j = 0; i <= x; ++i)
{
for (int temp = 0; temp <= j; ++temp)
{
arr [temp] *= i;
arr [temp] += b;
if (arr[temp] > 99)
{
b = arr[temp] / 100;
arr [temp] %= 100;
if(temp == j) count = true;
}
}
if(count)//最后一次是否有进位
{
while (b)
{
arr.push_back(b % 100);
b /= 100;
++j;
}
count = false;
}
}
//输出结果
cout << arr [j--];
for (; j >= 0; --j)
{
if(arr[j] > 9)//保证每部分都以两位数输出
cout << arr[j];
else
cout << 0 << arr[j];
}
cout << endl;
return 0;
}
我想里面有个逻辑错误,因为和我以前写的一个求出来的结果不一样。找不出来是哪里错了…高手给帮忙看看。