题目:
一开始我看到这题目其实觉得挺简单的,第一次简单写了一个循环就提交上去了,结果…
我意识到这是因为超过long类型的最大范围导致的,所以第二次换成BigInteger大整数类型,但最后一个测试点超时了…
通过百度的大佬们得到了正确地解决方案,那就是——同余定理。
简单应用:
• (a + b)%c=(a%c + b%c)%c;
• (a * b)%c=(a%c * b%c)%c;
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int preSum,rearSum,tmpSum,i=1;
preSum=rearSum=i;
if (n>2) {
i=2;
while(i!=n) {
tmpSum=(rearSum+preSum)%10007;
preSum=rearSum;
rearSum=tmpSum;
i++;
}
}
System.out.println(rearSum);
}
}
没想到第一道题想要拿满分都需要这么波折了,代码之路任重而道远。