HDU 2817 A sequence of numbers 整数快速幂

A sequence of numbers

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4550    Accepted Submission(s): 1444

Problem Description

Xinlv wrote some sequences on the paper a long time ago, they might be arithmetic or geometric sequences. The numbers are not very clear now, and only the first three numbers of each sequence are recognizable. Xinlv wants to know some numbers in these sequences, and he needs your help.

Input

The first line contains an integer N, indicting that there are N sequences. Each of the following N lines contain four integers. The first three indicating the first three numbers of the sequence, and the last one is K, indicating that we want to know the K-th numbers of the sequence.

You can assume 0 < K <= 10^9, and the other three numbers are in the range [0, 2^63). All the numbers of the sequences are integers. And the sequences are non-decreasing.

Output

Output one line for each test case, that is, the K-th number module (%) 200907.

Sample Input

2

1 2 3 5

1 2 4 5

Sample Output

5
16

Source

2009 Multi-University Training Contest 1 - Host by TJU

Recommend

gaojie

题目大意:给一个数N,代表N组数据,接下来N行,每行前三个数代表等差或等比数列前三个数,求第K个数。。。

思路:分两种情况

等差数列:第K个数是a1+(k-1)*d

等比数列:第K个数是a1*(k-1)*q,公比为整数,K<=10^9,q的k次方用到整数快速幂

注意:__int64型

#include<iostream>
#define mod 200907
using namespace std;
__int64 mi(__int64 q,__int64 k)
{
    __int64 sum=1;
    while(k)
    {
    if(k&1) sum=(sum*q)%mod;
    q=(q*q)%mod;
    k>>=1;
    }//整数快速幂
    return sum;
}
int main()
{
    int t;
    __int64 a, b, c, k;
    cin>>t;while(t--)
    {
        cin>>a>>b>>c>>k;
        if(c-b==b-a)
        cout<<(a%mod+(k-1)%mod*((c-b)%mod))%mod<<endl;
        else
        cout<<(mi(c/b,--k)%mod*a%mod)%mod<<endl;
    }
    return 0;
} 
时间: 2024-08-09 02:05:38

HDU 2817 A sequence of numbers 整数快速幂的相关文章

hdu 2817 A sequence of numbers(快速幂取余)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2817 题目大意:给出三个数,来判断是等差还是等比数列,再输入一个n,来计算第n个数的值. 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #define m 200907 5 6 using namespace std; 7 8 __int64 fun(__int64 j,__int64 k) 9

HDU - 2817 - A sequence of numbers (快速幂取模!)

A sequence of numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3494    Accepted Submission(s): 1073 Problem Description Xinlv wrote some sequences on the paper a long time ago, they migh

HDOJ 2817 A sequence of numbers【快速幂取模】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2817 A sequence of numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3754    Accepted Submission(s): 1152 Problem Description Xinlv wrote so

hdoj 2817 A sequence of numbers(快速幂取模)

A sequence of numbers http://acm.hdu.edu.cn/showproblem.php?pid=2817 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4046    Accepted Submission(s): 1242 Problem Description Xinlv wrote some se

杭电 2817 A sequence of numbers【快速幂取模】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2817 解题思路:arithmetic or geometric sequences 是等差数列和等比数列的意思, 即令输入的第一个数为a(1),那么对于等差数列 a(k)=a(1)+(k-1)*d,即只需要求出 a(k)%mod   又因为考虑到k和a的范围, 所以对上式通过同余作一个变形:即求出 (a(1)%mod+(k-1)%mod*(d%mod))%mod 对于等比数列 a(k)=a(1)*q

hdoj 2817 A sequence of numbers【快速幂】

A sequence of numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4384    Accepted Submission(s): 1374 Problem Description Xinlv wrote some sequences on the paper a long time ago, they might

【HDU】2817-A sequence of numbers(快速幂)

对于两种序列一种等比,一种等差 如果是等比 ak = a1 + (k - 1) * d 直接用((a1 * mod) + ((k - 1) % mod) * (d % mod)) % mod求就可以了 如果是等差 ak = a1 * q ^(k - 1) 利用快速幂求出q ^(k - 1)可以得到结果 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using na

hdu 2817 A sequence of numbers

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2817 题意分析: 给数列前3项数字,要么是等差数列,要么是等比数列,然后计算出第K项.通过前3项套入等差数列的中项公式然后判断数列的类型,然后对应计算第K项.等差没什么好说的,等比这里需要用快速幂. 代码: #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #i

hdu 2817 A sequence of numbers(快速幂)

Problem Description Xinlv wrote some sequences on the paper a long time ago, they might be arithmetic or geometric sequences. The numbers are not very clear now, and only the first three numbers of each sequence are recognizable. Xinlv wants to know