问题: https://www.hackerrank.com/challenges/sherlock-and-queries
我的解决方案:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N,M;
long div = 1000000007;
N=sc.nextInt();
M=sc.nextInt();
long[] A=new long[N];
int[] B=new int[M];
int[] C=new int[M];
for(int i=0;i<N;i++)
{
A[i]=sc.nextInt();
}
for(int i=0;i<M;i++)
{
B[i]=sc.nextInt();
}
for(int i=0;i<M;i++)
{
C[i]=sc.nextInt();
}
for(int i=0;i<M;i++)
{
for(int j=B[i]-1;j<N;j+=B[i])
{
if((j+1)%B[i]==0)
{
A[j] = ((A[j] * C[i]));
if(div<A[j])
A[j]=A[j]%div;
}
}
}
for(int i=0;i<N;i++)
System.out.print(A[i]+" ");
} }
它为小输入提供输出。但是对于较大的值它会不断给出“由于超时而终止”。 我努力了,无法解决这个问题。 关于减少时间复杂度的任何想法? 谢谢!!!