尝试在线编程第一次因子给出了错误的答案

时间:2017-06-14 06:03:49

标签: c++

这是一个因子程序,我是在编码网站上制作的。请帮我找到为什么错了?

it('example to pass wait time from json file:'function(){
   //line of codes
   utility.wait(input.shorWait);//make sure that wait method available in 
   //utility file 
   browser.sleep(input.longWait)
 });

2 个答案:

答案 0 :(得分:3)

您应该在每个测试用例开始时将f的值重新初始化为1。

#include <iostream>
using namespace std;
int main()
{
    int i, j, f = 1;
    int t, a[100];
    cin >> t;//enter test cases
    for (i = 0; i < t; i++)
        cin >> a[i];//enter all the cases one by one
    for (i = 0; i < t; i++)
    {
        f = 1 // add this line
        for (j = 1; j <= a[i]; j++)
            f = f*j;
        cout << f;//displays each factorial
    }
    return 0;
}

答案 1 :(得分:0)

每次计算阶乘时,都应该重新初始化factorial variable f的值,也不需要使用数组来存储所有被请求的阶乘案例而不必要地浪费内存。

以下是优化的解决方案:

#include <iostream>
using namespace std;
int main()
{
    int i, j, f,num;
    int t;
    cin >> t; //enter test cases
    for (i = 0; i < t; i++)
    {
        cin >> num;
        f = 1;
        for (j = 1; j <= num; j++) {
            f = f * j;
        }
        //displays each factorial
        cout << f << endl;
    }
    return 0;
}