zoukankan      html  css  js  c++  java
  • 有趣的数学题

    http://csustacm.com:4803/problem/1106

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define IT set<ll>::iterator
     6 #define pb push_back
     7 #define eb emplace_back
     8 #define maxn 200005
     9 #define eps 1e-6
    10 #define PI acos(-1.0)
    11 #define rep(k,i,j) for(int k=i;k<j;k++)
    12 typedef long long ll;
    13 typedef pair<int,int> pii;
    14 typedef pair<ll,ll>pll;
    15 typedef pair<ll,int> pli;
    16 typedef pair<pair<int,string>,pii> ppp;
    17 typedef unsigned long long ull;
    18 const long long MOD=1000000007;
    19 const double oula=0.57721566490153286060651209;
    20 using namespace std;
    21 
    22 inline char nc()
    23 {
    24     static char buf[10000000], *p1 = buf, *p2 = buf;
    25     return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 10000000, stdin), p1 == p2) ? EOF : *p1++;
    26 }
    27 inline int read()
    28 {
    29     int res = 0;
    30     char ch;
    31     do ch = nc(); while (ch < 48 || ch > 57);
    32     do res = res * 10 + ch - 48, ch = nc(); while (ch >= 48 && ch <= 57);
    33     return res;
    34 }
    35 
    36 typedef vector<ll> vec;
    37 typedef vector<vec> mat;
    38 
    39 mat mul(mat &a,mat &b,ll mod){
    40     mat c(a.size(),vec(b[0].size()));
    41     for(int i=0;i<a.size();i++){
    42         for(int k=0;k<b.size();k++){
    43             if(a[i][k]){
    44                 for(int j=0;j<b[0].size();j++){
    45                     c[i][j]=(c[i][j]+a[i][k]*b[k][j]%mod+mod)%mod;
    46                 }
    47             }
    48         }
    49     }
    50     return c;
    51 }
    52 
    53 mat ksm(mat a,ll n,ll mod){
    54     mat b(a.size(),vec(a.size()));
    55     b[0][0]=2;
    56     b[1][0]=b[2][0]=1;
    57     while(n){
    58         if(n&1){
    59             b=mul(a,b,mod);
    60         }
    61         a=mul(a,a,mod);
    62         n>>=1;
    63     }
    64     return b;
    65 }
    66 
    67 int main(){
    68     std::ios::sync_with_stdio(false);
    69     ll n,m,x,y;
    70     cin>>n>>m>>x>>y;
    71     ll gcd=__gcd(n+m,x+y);
    72     if(gcd==1||gcd==2) cout<<1<<endl;
    73     else{
    74         mat a(3,vec(3));
    75         a[0][0]=a[0][1]=a[1][0]=a[2][1]=1;
    76         mat ans=ksm(a,gcd-3,1e9+7);
    77         cout<<ans[0][0]<<endl;
    78     }
    79 }
    View Code
  • 相关阅读:
    org.eclipse.core.internal.registry.ExtensionsParser的流程分析
    控件设计时的属性页定位办法
    IE的内存泄漏问题
    <<深入剖析ASP.NET组件设计>>的一个辅助类
    midp2.0 图片文件名问题
    解决了XMLTextReader的用法的一个难题,EndElement
    J2ME开发心得
    解决Js内存泄漏问题的代码片断
    asp.net代码中尖括号和百分号的含义
    string.Format和cookie代码
  • 原文地址:https://www.cnblogs.com/Fighting-sh/p/10718146.html
Copyright © 2011-2022 走看看