标签:
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 905 Accepted Submission(s): 295
1 import java.io.OutputStream; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.PrintWriter; 5 import java.util.StringTokenizer; 6 import java.math.BigInteger; 7 import java.io.IOException; 8 import java.io.BufferedReader; 9 import java.io.InputStreamReader; 10 import java.io.InputStream; 11 12 /** 13 * Built using CHelper plug-in 14 * Actual solution is at the top 15 * 16 * @author xyiyy@www.cnblogs.com/fraud 17 */ 18 public class Main { 19 public static void main(String[] args) { 20 InputStream inputStream = System.in; 21 OutputStream outputStream = System.out; 22 Scanner in = new Scanner(inputStream); 23 PrintWriter out = new PrintWriter(outputStream); 24 Task1009 solver = new Task1009(); 25 solver.solve(1, in, out); 26 out.close(); 27 } 28 29 static class Task1009 { 30 Scanner in; 31 PrintWriter out; 32 33 public void solve(int testNumber, Scanner in, PrintWriter out) { 34 this.in = in; 35 this.out = out; 36 run(); 37 } 38 39 void run() { 40 BigInteger dp[] = new BigInteger[2010]; 41 BigInteger a[] = new BigInteger[2010]; 42 dp[0] = BigInteger.ONE; 43 dp[1] = BigInteger.ONE; 44 dp[2] = BigInteger.ONE; 45 dp[3] = BigInteger.valueOf(3); 46 dp[4] = BigInteger.valueOf(5); 47 a[0] = BigInteger.ZERO; 48 a[1] = BigInteger.ZERO; 49 a[2] = BigInteger.ONE; 50 a[3] = BigInteger.ONE; 51 a[4] = BigInteger.valueOf(2); 52 for (int i = 5; i < 2010; i++) { 53 dp[i] = dp[i - 1].add(dp[i - 2]); 54 a[i] = a[i - 2].add(dp[i - 2]); 55 } 56 for (int i = 1; i < 2010; i++) { 57 dp[i] = dp[i].add(dp[i - 1]); 58 } 59 BigInteger m; 60 int t, n; 61 t = in.nextInt(); 62 while (t != 0) { 63 t--; 64 n = in.nextInt(); 65 m = in.nextBigInteger(); 66 if (m.compareTo(BigInteger.ONE) == 0) { 67 out.println(1); 68 continue; 69 } 70 int i = 0; 71 for (i = 0; i < 2010; i++) { 72 if (dp[i].compareTo(m) >= 0) break; 73 } 74 i--; 75 out.println(a[i + 1].add(m.subtract(dp[i].add(BigInteger.ONE))).mod(BigInteger.valueOf(258280327))); 76 } 77 } 78 79 } 80 81 static class Scanner { 82 BufferedReader br; 83 StringTokenizer st; 84 85 public Scanner(InputStream in) { 86 br = new BufferedReader(new InputStreamReader(in)); 87 eat(""); 88 } 89 90 private void eat(String s) { 91 st = new StringTokenizer(s); 92 } 93 94 public String nextLine() { 95 try { 96 return br.readLine(); 97 } catch (IOException e) { 98 return null; 99 } 100 } 101 102 public boolean hasNext() { 103 while (!st.hasMoreTokens()) { 104 String s = nextLine(); 105 if (s == null) 106 return false; 107 eat(s); 108 } 109 return true; 110 } 111 112 public String next() { 113 hasNext(); 114 return st.nextToken(); 115 } 116 117 public int nextInt() { 118 return Integer.parseInt(next()); 119 } 120 121 public BigInteger nextBigInteger() { 122 return new BigInteger(next()); 123 } 124 125 } 126 }
hdu5351 MZL's Border(规律题,java)
标签:
原文地址:http://www.cnblogs.com/fraud/p/4705819.html