ITKeyword,专注技术干货聚合推荐

注册 | 登录

HDU2817 A sequence of numbers

tigerisland45 分享于 2016-07-24

推荐:hdu 2817 A sequence of numbers

题目链接: http://acm.hdu.edu.cn/showproblem.phppid=2817 题意分析: 给数列前3项数字,要么是等差数列, 要么是等比数列,然后计算出第K项。通过前3项套入

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

问题链接: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;

}

r

推荐:hdu 2817 A sequence of numbers(判断是等差还是等比数列)

转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.phppid=2817 Problem Description Xinlv wrote some sequence

eturn 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\n", si);

}

return 0;}

推荐: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 Submis

问题链接:HDU2817 A sequence of numbers。基础训练题,用C语言编写程序。 这个问题是输入三个数,判断是等差数列还是等比数列,然后按照相应的数列进行计算,再做模除计算。 解决这个问题需要

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。