当前位置: 首页 > 知识库问答 >
问题:

我在ideone上取得了不错的成绩,但SPOJ不接受我的解决方案。链接如下所示

韩宏朗
2023-03-14

http://www.spoj.com/problems/FCTRL2/

当我使用一些测试用例进行测试时,它工作得很好。但斯波吉的回答是错误的。我该怎么做才能让他们接受代码?

import java.util.*;

class testw
{   
public static void main(String args[])
{
       Scanner obj = new Scanner(System.in);
       int t=obj.nextInt();
       int count = t;
       int arr[]= new int[t];
       int res[] =new int[t];
       int i=0;
       while(t>0)
       {
           arr[i]=obj.nextInt();
           res[i]=func(arr[i]);
           i++;
           t--;
       }

       for(int j=0; j<count; j++) 
       {
           System.out.println(res[j]);
        }
    }

    public static int func(int a)
    {
        int f=1;
        for(int i=1;i<=a;i++)
        {
            f= f*i;
        }
        return f;
    }}

共有1个答案

尉迟宪
2023-03-14

您的代码无法处理非常大的数字。您可以看到问题描述约束状态为1≤n≤100。你应该知道100!有159位,而您使用的int类型绑定了几十亿(即大约10位)。

您的代码在Ideone上运行良好,因为您可以使用少量数字进行尝试。您应该期望在正确性验证期间,Spoj使用更高级的测试用例(包括更大的数字)。

 类似资料: