zoukankan      html  css  js  c++  java
  • UVA

    找Fn =( Fn-1 + Fn-2 ) mod n 的循环节

    暴力找即可

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 typedef unsigned long long ll;
     5 using namespace std;
     6 const int MAXN = 1023;
     7 ll f[MAXN][MAXN*10];
     8 int circle[MAXN];
     9 
    10 void init(){
    11     for(int k = 2; k<= 1000; k++){
    12         f[k][0] = 0, f[k][1] = 1;
    13         for(int i = 2; ; i++){
    14             f[k][i] = (f[k][i-1] + f[k][i-2])%k;
    15             if(f[k][i] == 1 && f[k][i-1] == 0){
    16                 circle[k] = i-1;
    17                 break;
    18             }
    19         }
    20     }
    21 }
    22 ll quick_mod(ll a, ll b, ll mod){
    23     ll ans = 1;
    24     while(b > 0){
    25         if(b&1){
    26             b--;
    27             ans = ans*a%mod;
    28         }
    29         b >>= 1;
    30         a = a*a%mod;
    31     }
    32     return ans;
    33 }
    34 void slove(ll a, ll b, int n){
    35     int res = quick_mod(a%circle[n], b, circle[n]);
    36     cout << f[n][res] << endl;
    37 }
    38 int main() {
    39     //freopen("data.in.txt", "r", stdin);
    40    // freopen("data.out.txt", "w", stdout);
    41     int t, n;
    42     ll a, b;
    43     init();
    44     scanf("%d", &t);
    45     while(t--) {
    46         cin >> a >> b >> n;
    47         if(n == 1 || a == 0) cout<<0 << endl;;
    48         else slove(a, b, n);
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    c++获取时间戳
    指针数组学习
    Matlab小波工具箱的使用2
    matlab 小波工具箱
    指针
    低通滤波参数
    git 合并分支到master
    matlab json文件解析 需要下载一个jsonlab-1.5
    matlab2017b
    数据结构-链式栈c++
  • 原文地址:https://www.cnblogs.com/cshg/p/5933173.html
Copyright © 2011-2022 走看看