【问题标题】:generating series- K Fibonnaci (Java)生成系列 - K Fibonacci (Java)
【发布时间】:2017-11-30 06:55:05
【问题描述】:

这里是新的。 我正在尝试解决这个问题here。 我正在使用 java,但我不知道为什么它在大多数测试用例中都失败了。这是我的解决方案

public class Main{

    public static void main(String[] args) {
        int k,n;
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        k = sc.nextInt();
        long ans;
        long term[]=new long[n];
        for(int i=0;i<n;i++)
        {
         if(i<k)
             term[i]=1;
         else if(i==k)
             term[i]=k;
         else
         {
             term[i]=0;
            for(int j=i-k;j<i;j++)
                term[i]+=term[j];
         }
        } 
        ans=term[n-1]%1000000007;
        System.out.println(ans);
    }
}

我通过了 4 个测试用例,但在其他测试用例中失败了。我似乎无法弄清楚为什么。 类似的解决方案已被接受,即this

任何帮助将不胜感激。谢谢:)

【问题讨论】:

  • 是否足够长以容纳条款?
  • 这些术语很可能太大而无法容纳很长时间,这就是为什么您将每个术语链接到 1000000007 的解决方案(考虑到 (a%b + c%b) % b == (a+c) % b 的方式)

标签: java fibonacci series


【解决方案1】:

导入 java.util.*; 公共类主{

public static void main(String[] args) {
    int k,n;
    Scanner sc = new Scanner(System.in);
    n = sc.nextInt();
    k = sc.nextInt();
    long ans;
    long term[]=new long[n];
    for(int i=0;i<n;i++)
    {
     if(i<k)
         term[i]=1;
     else if(i==k)
         term[i]=k;
     else
     {
         term[i]=0;
        for(int j=i-k;j<i;j++){
            term[i]+=term[j];
            term[i]%=1000000007;    
            }
     }
    } 
    ans=term[n-1]%1000000007;
    System.out.println(ans);
}

}

它工作并通过了所有测试用例(njzk2 也说过这个解决方案)

【讨论】:

  • 哦。谢谢大家?
猜你喜欢
  • 1970-01-01
  • 2021-01-21
  • 1970-01-01
  • 2018-06-03
  • 2016-01-02
  • 2015-05-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多