import java.io.*;
static int MOD = 1000000007;
public class power {
public static long power(long num, int p) {
if (p == 0) return 1;
if (p == 1) return num;
long number = num;
for (int i = 2; i <= p; i++) {
num *= number;
num %= MOD;
}
return num;
}
};
public class Solution {
public static void main(String[] args) throws Exception {
int N, M;
long[] T = new long[1001];
long[] S = new long[1001];
long[] P = new long[1001];
T[0] = T[1] = 1;
T[2] = 2;
T[3] = 4;
T[4] = 8;
P[0] = P[1] = 1;
for (int i = 5; i <= 1000; i++)
T[i] = (T[i - 1] + T[i - 2] + T[i - 3] + T[i - 4]) % MOD;
S[0] = 1;
S[1] = 1;
long sum;
int Tt;
BufferedReader br = new BufferedReader(new InputStreamReader(System. in ));
String line = br.readLine();
Tt = Integer.parseInt(line);
for (int t = 0; t < Tt; t++) {
line = br.readLine();
String[] inputStr = line.split(" ");
N = Integer.parseInt(inputStr[0]);
M = Integer.parseInt(inputStr[1]);
power p = new power();
for (int i = 0; i <= M; i++)
P[i] = p.power(T[i], N);
for (int i = 2; i <= M; i++) {
sum = 0;
for (int j = 1; j < i; j++) {
sum += (S[j] * P[i - j]) % MOD;
sum %= MOD1;
}
S[i] = (P[i] - sum);
S[i] = S[i] % MOD;
}
while (S[M] < 0)
S[M] += MOD;
System.out.println(S[M]);
}
}
}
在编译时,会出现错误,
class,interface, or enum expected
static int MOD = 100000007;
为什么会这样?另外,他们的任何其他错误是否会导致编译错误?我该如何纠正?我是Java新手。我不明白为什么他们首先出现错误。
答案 0 :(得分:1)
static int MOD = 1000000007;
写出边课。
将其包含在class power
内,然后使用power.MOD
代码应该是:
public class power {
static int MOD = 1000000007;
//rest of your code
}
答案 1 :(得分:0)
该字段的声明必须在课堂内:
更改为:
public class power {
static int MOD = 1000000007;
答案 2 :(得分:0)
以这种方式声明
public class power {
public static int MOD = 1000000007;
您可以在主方法中通过类名访问它。
power.MOD
注意:强>
您不应该将方法名称作为您的类名(在您的情况下为power
)。
我已删除所有编译错误。为我所做的更改添加了评论。
public class Power {
public static int MOD = 1000000007;
public static long findPower(long num, int p) { // changed method name as it was same as class name
if (p == 0)
return 1;
if (p == 1)
return num;
long number = num;
for (int i = 2; i <= p; i++) {
num *= number;
num %= MOD;
}
return num;
}
}
class Solution { // removed public. If you want to use public then you will have to create another java file name Solution.java and paste Solution class code inside that java file.
public static void main(String[] args) throws Exception {
int N, M;
long[] T = new long[1001];
long[] S = new long[1001];
long[] P = new long[1001];
T[0] = T[1] = 1;
T[2] = 2;
T[3] = 4;
T[4] = 8;
P[0] = P[1] = 1;
for (int i = 5; i <= 1000; i++)
T[i] = (T[i - 1] + T[i - 2] + T[i - 3] + T[i - 4]) % Power.MOD; // access using Power.MOD
S[0] = 1;
S[1] = 1;
long sum;
int Tt;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
Tt = Integer.parseInt(line);
for (int t = 0; t < Tt; t++) {
line = br.readLine();
String[] inputStr = line.split(" ");
N = Integer.parseInt(inputStr[0]);
M = Integer.parseInt(inputStr[1]);
// Power p = new Power();
for (int i = 0; i <= M; i++)
P[i] = Power.findPower(T[i], N); // No need to use object, you can directly access static methods using class
for (int i = 2; i <= M; i++) {
sum = 0;
for (int j = 1; j < i; j++) {
sum += (S[j] * P[i - j]) % Power.MOD;
sum %= Power.MOD;
}
S[i] = (P[i] - sum);
S[i] = S[i] % Power.MOD;
}
while (S[M] < 0)
S[M] += Power.MOD;
System.out.println(S[M]);
}
}
}
答案 3 :(得分:0)
声明static int MOD = 1000000007;在power class和import包里面从main方法访问。
import static com.regex.power.MOD;
public class power {
static int MOD = 1000000007;