数列的第k个元素-快速幂
2017-04-21 18:32
190 查看
问题 E:
数列3
时间限制: 1 Sec 内存限制: 32 MB
提交: 51 解决: 8
[提交][状态][讨论版]
题目描述
小明有天在做数学题,碰到这样一个问题,只告诉你一个数列的前三个数,并且这个数列一定是等差数列或等比数列中的一种,问你这个数列的第k个数是什么。现在请你编程帮小明解答这个问题。
输入
输入的第一行是一个整数n,表示共有n组数列。
接下来n行,每行输入四个整数,前三个数表示数列的前三个数,第四个数就是题目描述中的k。
其中0<k<=10^9,其他三个数的范围为[0,2^63)。题目保证输入的数列为非降序的。
输出
对于每组数列,输出数列中的第k个数模(%)200907后的结果。
样例输入
2
1 2 3 5
1 2 4 5
样例输出
5
1. 题意分析:告诉你一个数列的前三个数,并且这个数列一定是等差数列或等比数列中的一种,问你这个数列的第k个数是什么。并且第k个数要对200907取余;
2. 题目类型:快速幂
3. 解题思路:判断如果是等差数列先把公差对200907求余,最后用等差数列公式算到k在求余;如果是等比数列就用快速幂算到k,每次求余;
数列3
时间限制: 1 Sec 内存限制: 32 MB
提交: 51 解决: 8
[提交][状态][讨论版]
题目描述
小明有天在做数学题,碰到这样一个问题,只告诉你一个数列的前三个数,并且这个数列一定是等差数列或等比数列中的一种,问你这个数列的第k个数是什么。现在请你编程帮小明解答这个问题。
输入
输入的第一行是一个整数n,表示共有n组数列。
接下来n行,每行输入四个整数,前三个数表示数列的前三个数,第四个数就是题目描述中的k。
其中0<k<=10^9,其他三个数的范围为[0,2^63)。题目保证输入的数列为非降序的。
输出
对于每组数列,输出数列中的第k个数模(%)200907后的结果。
样例输入
2
1 2 3 5
1 2 4 5
样例输出
5
1. 题意分析:告诉你一个数列的前三个数,并且这个数列一定是等差数列或等比数列中的一种,问你这个数列的第k个数是什么。并且第k个数要对200907取余;
2. 题目类型:快速幂
3. 解题思路:判断如果是等差数列先把公差对200907求余,最后用等差数列公式算到k在求余;如果是等比数列就用快速幂算到k,每次求余;
#include <stdio.h> int main() { long long sum,t, a, b, c, k, d, q; scanf("%lld", &t); while(t--) { scanf("%lld %lld %lld %lld", &a, &b,&c,&k); if(b-a == c-b) { d = (b-a); sum = a+d*(k-1); sum %= 200907; } else { q = c/b; q %= 200907; k--; for(sum=a%200907; k; k/=2) { if(k % 2) sum *= q; q *= q; q %= 200907; sum %= 200907; } } printf("%lld\n", sum); } return 0; }
相关文章推荐
- 快速获取数列/矩阵中前项元素累积和
- 查找一个无序数列中第k个大的元素
- 线性时间内从一个数组中找出第K个最小的元素——编程珠玑
- 【22】-快速排序随机选择元素的优雅解法
- 快速查找数组中的某个元素并返回下标示例
- UVA 10689 Yet another Number Sequence(矩阵快速幂求Fib数列)
- jQuery快速获取form的所有元素
- [数列通项 矩阵快速幂] BZOJ4002 [JLOI2015]有意义的字符串
- 每天一算法(输出链表倒数第k个元素)
- 寻找已排序的连个数组的第k个元素
- 快速检索的方法删除顺序表中的元素
- 如何快速删除list中的最后一个元素?
- P03 (*) 获取列表的第K个元素
- 快速选择---选择数组中第k个最小值
- 找出单链表的倒数第k个元素
- NZAU 1202: GCD 矩阵快速幂 gcd和fib数列一些结论
- java如何快速得到一个数组里面有多少种元素?
- 快速找链表中间元素
- 分治法---查询数组中第k个元素
- 求一个链表中倒数第K个元素(2009年计算机硕士研究生全国入学考试统考大题第1题)