博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU2817 A sequence of numbers
阅读量:7096 次
发布时间:2019-06-28

本文共 972 字,大约阅读时间需要 3 分钟。

问题链接:。基础训练题,用C语言编写程序。

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

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

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

AC程序如下:

/* HDU2817 A sequence of numbers */#include 
#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\n", si); } return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7564574.html

你可能感兴趣的文章
canvas绘制多张图其中有空白或绘制不成功的问题
查看>>
quicklink解析
查看>>
webpack4系列教程(九):开发环境和生产环境
查看>>
GraphQL 科普 前端向
查看>>
前端基本功-常见概念(一)
查看>>
史上最全SQL优化方案
查看>>
阿里云时空数据库引擎HBase Ganos上线,场景、功能、优势全解析
查看>>
Promise实现思路的个人理解
查看>>
基于文件系统实现可追加的数据集市
查看>>
Python2.x与3.x版本区别
查看>>
pipenv与virtualenv
查看>>
Python 送你一棵圣诞树
查看>>
Express 文档(express())
查看>>
算法复杂度分析
查看>>
WEB站点性能优化实践
查看>>
C++ 学习笔记之——输入和输出
查看>>
前端调用ocx将ocx封装为cab包整体流程
查看>>
接口异常状态统一处理方案:优先业务端处理,再按需统一处理。
查看>>
Go模块简明教程(Go语言依赖包管理工具)
查看>>
javascript操作字符串的一些方法
查看>>