Twice Equation (ICPC2017 Naning) (java 大数)
生活随笔
收集整理的這篇文章主要介紹了
Twice Equation (ICPC2017 Naning) (java 大数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
5210: Twice Equation
時間限制:?1 Sec?? 內存限制:?128 MB提交:?113?? 解決:?46
[提交][狀態][討論版][命題人:admin]
題目描述
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提示
通過關系 2*m*(m+1) = n*(n+1)? 打表能發現關于n的遞推關系式? ? fn[i](第i項的n值)?= 6*fn[i-1] - fn[i-2] + 2? ,?由于數據范圍達到了驚人的? 10e190 ,?所以我們可以用? java?大數解決此問題,代碼如下:
import java.util.Scanner ; import java.math.BigInteger ;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in) ;BigInteger[] fn = new BigInteger[1500] ;BigInteger two = BigInteger.valueOf(2) ;BigInteger six = BigInteger.valueOf(6) ;fn[1] = BigInteger.valueOf(3) ;fn[2] = BigInteger.valueOf(20) ;for ( int i = 3 ; i <= 1200 ; i ++ ) {fn[i] = fn[i-1].multiply(six).subtract(fn[i-2]).add(two) ;}int t = sc.nextInt() ;while ( t -- > 0 ) {BigInteger L = sc.nextBigInteger() ;for ( int i = 1 ; i <= 500 ; i ++ ) {if ( L.compareTo(fn[i]) < 0 ) {System.out.println(fn[i]) ;break ;}}}} }(做題的時候一看這題就是數學關系題 , 畫出函數圖像 , 列方程找關系 ……?想過打表但看到數據沒找出遞推關系,?懵了好久,?后來看了別人的題解才發現有這遞推關系式(.........),?還是學長和同級dalao威武.... )
(膜拜dalao) o(*▽*)q
(補題練練 java?大數,?有些許不明白,?記錄一下..)?
總結
以上是生活随笔為你收集整理的Twice Equation (ICPC2017 Naning) (java 大数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 很早之前申请过域名,现在想做一个网站,如
- 下一篇: PhpStorm 2022注册失败是什么