zoukankan      html  css  js  c++  java
  • HDU2817 A sequence of numbers

    问题链接:HDU2817 A sequence of numbers基础训练题,用C语言编写程序。

    这个问题是输入三个数,判断是等差数列还是等比数列,然后按照相应的数列进行计算,再做模除计算。

    解决这个问题需要注意两点,一是计算模幂(套路);二是输入的数据需要使用long long类型。

    计算模幂需要用二分法,以便加快计算速度。

    AC程序如下:

    /* HDU2817 A sequence of numbers */
    
    #include <stdio.h>
    
    #define M 200907
    
    // 模幂计算
    long long powermod(long long a, long long n, int m)
    {
        long long res = 1L;
        while(n) {
            if(n & 1L) {        // n % 2 == 1
                res *= a;
                res %= m;
            }
            a *= a;
            a %= m;
            n >>= 1;
        }
        return res;
    }
    
    int main(void)
    {
        int n;
        long long a, b, c, si, k;
    
        scanf("%d", &n);
        while(n--) {
            // 读入数据
            scanf("%lld%lld%lld%lld", &a, &b, &c, &k);
    
            // 判定数列类型
            if(b-a == c-b) {
                // 按照等差数列计算
                int d = b - a;
                si = (a + (k - 1)*d) % M;
            } else {
                int q = b / a;
    
                si = (a * powermod(q, k-1, M)) % M;
            }
    
            // 输出结果
            printf("%lld
    ", si);
        }
    
        return 0;
    }


  • 相关阅读:
    html
    头部标签
    ajax
    分辨率
    js 运动基础
    js DOM
    js定时器
    js数组
    js基础
    例子:js简易日历
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564574.html
Copyright © 2011-2022 走看看