zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 13 D. Iterated Linear Function 水题

    D. Iterated Linear Function

    题目连接:

    http://www.codeforces.com/contest/678/problem/D

    Description

    Consider a linear function f(x) = Ax + B. Let's define g(0)(x) = x and g(n)(x) = f(g(n - 1)(x)) for n > 0. For the given integer values A, B, n and x find the value of g(n)(x) modulo 109 + 7.

    Input

    The only line contains four integers A, B, n and x (1 ≤ A, B, x ≤ 109, 1 ≤ n ≤ 1018) — the parameters from the problem statement.

    Note that the given value n can be too large, so you should use 64-bit integer type to store it. In C++ you can use the long long integer type and in Java you can use long integer type.

    Output

    Print the only integer s — the value g(n)(x) modulo 109 + 7.

    Sample Input

    3 4 1 1

    Sample Output

    7

    Hint

    题意

    g(0)(x) = x

    g(n)(x)=f(g(n-1)(x))

    f(x) = ax+b

    给你a b n x

    求g(n)(x)

    题解:

    推一下 发现 g(n)(x) = a^nx+a^(n-1)b+a^(n-2)b+...+ab+b

    其实就是等比数列……

    快速幂直接莽一波就好了

    特判 a=1的时候

    代码

    #include<bits/stdc++.h>
    using namespace std;
    const long long mod = 1e9+7;
    long long quickpow(long long  m,long long n,long long k)//返回m^n%k
    {
        long long b = 1;
        while (n > 0)
        {
              if (n & 1)
                 b = (b*m)%k;
              n = n >> 1 ;
              m = (m*m)%k;
        }
        return b;
    }
    
    int main()
    {
        long long a,b,n,x;
        cin>>a>>b>>n>>x;
        if(a==1)
        {
            cout<<(n%mod*b+x)%mod<<endl;
            return 0;
        }
        long long ans=(quickpow(a,n,mod)-1+mod)%mod;
        ans=ans*quickpow(a-1,mod-2,mod)%mod*b%mod;
        ans=(ans+quickpow(a,n,mod)*x+mod)%mod;
        printf("%lld
    ",ans%mod);
    }
  • 相关阅读:
    什么时候应该使用C#的属性
    Unicode和字符集小结
    C#编译器怎么检查代码是否会执行
    C#中如何操作2个list
    用Windbg来看看CLR的JIT是什么时候发生的
    bzoj-1579: [Usaco2009 Feb]Revamping Trails 道路升级
    次小生成树
    bzoj-3687: 简单题
    bzoj-3669: [Noi2014]魔法森林
    uva 11732 (trie树)
  • 原文地址:https://www.cnblogs.com/qscqesze/p/5582733.html
Copyright © 2011-2022 走看看