[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): 4041    Accepted Submission(s): 1240

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
#include <stdio.h>
#include <string.h>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include<queue>
#include<stack>
using namespace std;
const int MOD=200907;
int main()
{
	int n;
	__int64 a,b,c,k;
    scanf("%d",&n);
    while(n--)
    {
    	scanf("%I64d %I64d %I64d %I64d",&a,&b,&c,&k);
    	if(b-a==c-b)
    	{
    		printf("%I64d\n",(a%MOD+((k-1)%MOD)*((b-a)%MOD))%MOD);
    	}
    	else
    	{
    		__int64 ans=a;
    		__int64 temp=b/a;
    		k--;
    		while(k)
    		{
    			if(k&1)	ans=ans*temp%MOD;
    			temp=temp*temp%MOD;//temp*=temp%MOD  WA
				k>>=1;
    		}
    		printf("%I64d\n",ans%MOD);
    	}
    }
	return 0;
}
时间: 2024-08-29 20:17:49

[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

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

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

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

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

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

杭电 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