zoukankan      html  css  js  c++  java
  • 多校-HDU 5351 MZL's Border 数学规律

    f[1] = 'b', f[2] = 'a', f[i] = f[i - 1] + f[i - 2]

    斐波那契数列的字符串,给你n和m,前m位中,最长的前缀等于后缀的长度是多少。1≤n≤1000, 1≤m≤length(f[n])

    规律题,虽然我不知道为什么。

     1 import java.io.*;
     2 import java.util.*;
     3 import java.math.*;
     4 public class Main{
     5     //Scanner cin = Scanner(System.in);
     6     static BigInteger f[] = new BigInteger[1005];
     7     public static void main(String[] args){
     8         f[1] = new BigInteger("1");
     9         f[2] = new BigInteger("2");
    10         for(int i = 3; i <= 1001; i++){
    11             //f[i].valueOf(f[i - 1);
    12             //f[i] = f[i - 1];
    13             f[i] = f[i - 1].add(f[i - 2]);
    14             //f[i].add(f[i - 2]);
    15             //System.out.println(f[i]);
    16         }
    17         Scanner cin = new Scanner(System.in);
    18         int T = cin.nextInt();
    19         int n;
    20         BigInteger m;
    21         for(int cas = 1; cas <= T; cas++){
    22             n = cin.nextInt();
    23             m = cin.nextBigInteger();
    24             BigInteger mm = m.add(new BigInteger("1"));
    25             int p = 0;
    26             for(int i = 1; i <= 1001; i++){
    27                 if(f[i].compareTo(mm) > 0){
    28                     p = i;
    29                     break;
    30                 }
    31             }
    32             BigInteger ans = m.subtract(f[p - 2]);
    33             System.out.println(ans.mod(new BigInteger("258280327")));
    34         }
    35         
    36     }
    37 }
  • 相关阅读:
    【leetcode】下一个排列
    【leetcode】配对交换
    【leetcode】两个相同字符之间的最长子字符串
    052-126&127
    052-125
    052-124
    052-123
    052-122
    052-121
    052-120
  • 原文地址:https://www.cnblogs.com/macinchang/p/4703052.html
Copyright © 2011-2022 走看看