日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Twice Equation (ICPC2017 Naning) (java 大数)

發布時間:2024/1/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 大数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。