概述
问题 L: Twice Equation
题目描述
For given L, find the smallest n no smaller than L for which there exists an positive integer m for which 2m(m + 1) = n(n + 1).
输入
This problem contains multiple test cases. The first line of a multiple input is an integer T (1 ≤ T < 1000) followed
by T input lines. Each line contains an integer L (1 ≤ L < 10190 ).
输出
For each given L, output the smallest n. If available n does not exist, output −1.
样例输入
3
1
4
21
样例输出
3
20
119
先用的c++打出前几项然后找出了一个递推的规律fn=f(n-1)*6-f(n-2)+2,然后就是直接用java大数直接while模拟递推就可以。
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
int t;
t=cin.nextInt();
while (t--!=0){
BigInteger n,a,b,c;
n=cin.nextBigInteger();
if(n.compareTo(BigInteger.valueOf(3))<=0) {
System.out.println("3");
continue;
}
if(n.compareTo(BigInteger.valueOf(20))<=0) {
System.out.println("20");
continue;
}
a=BigInteger.valueOf(3);
b=BigInteger.valueOf(20);
while(true) {
c=b.multiply(BigInteger.valueOf(6)).subtract(a).add(BigInteger.valueOf(2));
if(c.compareTo(n)>=0) {
System.out.println(c);
break;
}
a=b;
b=c;
}
}
}
}
最后
以上就是外向小虾米为你收集整理的Twice Equation(递推+java大数)的全部内容,希望文章能够帮你解决Twice Equation(递推+java大数)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复