A sequence of numbers

                                                            Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768
K (Java/Others)

                                                                                        Total Submission(s): 4874    Accepted Submission(s): 1543

->Link<-

题意:给出一个数列(等差或等比)的前三项,求第K项对200907取余;

先来复习一下数列通项公式:

等差数列通项公式:An=a1+(n-1)d;n>=1;d为公差;

等比数列通项公式:An=a1*q^(n-1);q为公比;

虽然这公式有条件限制,但题目说了数列非递减;说明题目并没有那么叼,一般的公式就行;

同余定理:

同余这个概念最初是由德国数学家高斯发明的。同余的定义是这样的:
 两个整数,a,b,如果他们同时除以一个自然数m,所得的余数相同,则称a,b对于模m同余。。记作a≡b(mod.m)。读作:a同余于b模m。  同余的性质也比较多,主要有以下一些:

1.对于同一个除数,两个数之和(或差)与它们的余数之和(或差)同余。

2.对于同一个除数,两个数的乘积与它们余数的乘积同余。

3.对于同一个除数,如果有两个整数同余,那么它们的差就一  定能被这个除数整除。

4.对于同一个除数,如果两个数同余,那么他们的乘方仍然同余。

思路:分两种情况考虑,等差或等比,如果是等比的话用快速幂取模做很快即好,但等差的时候怎么取余呢?

原来同余定理有:(a+b)%c=(a%c+b%c)%c;

推导:a=k1*c+a%c,b=k2*c+b%c;(a+b)%c=((k1*c+a%c)+(k2*c+b%c)%c)%c即上述所示;

这样等差也好做了;

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define MOD 200907
ll a,b,c,k;
ll fun(ll a,ll b)//快速幂取模;
{
ll x=1;
while(b)
{
if(b&1)
x=x*(a%MOD)%MOD;
a=(a*a)%MOD;
b=b>>1;
}
return x;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
ll sum;
scanf("%lld%lld%lld%lld",&a,&b,&c,&k);
if(2*b==a+c)//等差;
{
ll x=b-a;
sum=(a%MOD+(((k-1)%MOD)*(x%MOD)))%MOD;
}
else
{
ll x=b/a;
sum=(a%MOD)*(fun(x,k-1)%MOD)%MOD;
}
printf("%lld\n",sum);
}
return 0;
}

关键是这个同余定理!!!

HDU-2817,同余定理+快速幂取模,水过~的更多相关文章

  1. hdu 1097 A hard puzzle 快速幂取模

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1097 分析:简单题,快速幂取模, 由于只要求输出最后一位,所以开始就可以直接mod10. /*A ha ...

  2. 题解报告:hdu 1061 Rightmost Digit(快速幂取模)

    Problem Description Given a positive integer N, you should output the most right digit of N^N. Input ...

  3. HDU 1061 Rightmost Digit (快速幂取模)

    题意:给定一个数,求n^n的个位数. 析:很简单么,不就是快速幂么,取余10,所以不用说了,如果不会快速幂,这个题肯定是周期的, 找一下就OK了. 代码如下: #include <iostrea ...

  4. hdu 4704(费马小定理+快速幂取模)

    Sum                                                                                Time Limit: 2000/ ...

  5. 【费马小定理+快速幂取模】ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies

    G. Give Candies There are N children in kindergarten. Miss Li bought them N candies. To make the pro ...

  6. 【2018 ICPC焦作网络赛 G】Give Candies(费马小定理+快速幂取模)

    There are N children in kindergarten. Miss Li bought them N candies. To make the process more intere ...

  7. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)

    先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...

  8. HDU 1061 Rightmost Digit --- 快速幂取模

    HDU 1061 题目大意:给定数字n(1<=n<=1,000,000,000),求n^n%10的结果 解题思路:首先n可以很大,直接累积n^n再求模肯定是不可取的, 因为会超出数据范围, ...

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

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2817 解题思路:arithmetic or geometric sequences 是等差数列和等比数 ...

随机推荐

  1. CodeForces 923C Perfect Security

    C. Perfect Security time limit per test3.5 seconds memory limit per test512 megabytes inputstandard ...

  2. 2017 JUST Programming Contest 3.0 I. Move Between Numbers

    I. Move Between Numbers time limit per test 2.0 s memory limit per test 256 MB input standard input ...

  3. MyEclipse去除不必要的validation

    MyEclipse在构建项目时去除不必要的Valication可以加快构建速度. 操作: Window->Perferences->MyEclipse->Validation 在Va ...

  4. DateFormat类

    package Format_daqo; import java.util.Date; import java.text.DateFormat; public class DateFormatTest ...

  5. AJPFX总结Socket的低层次Java网络编程

    Socket的低层次Java网络编程 1 Socket通讯 网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接. ...

  6. 构建微服务开发环境5————安装Node.js

    [内容指引] 下载Node.js: Mac下安装Node.js: Windows下安装Node.js; 查看node和npm的版本. 一.下载Node.js 访问Node.js官网:https://n ...

  7. 波哥!一个不安分的IT男

    第一篇博文,紧张,窃喜,辣眼睛! 这个订阅号主要是写给自己的,近期越来越发现记忆力不如以前了! 时光如梭,岁月荏苒,或许这两句经典的开头文比较契合自己的年纪.依稀记得几年前还在组装服务器.搬机柜.做系 ...

  8. Node.js——body方式提交数据

    引入核心模块 http,利用其 api(http.createServer) 返回一个 http.server 实例,这个实例是继承于net.Server,net.Server 也是通过net.cre ...

  9. KVM环境下vCPU绑定到物理CPU

    在KVM环境中测试虚拟系统性能时,如果宿主机是有两个CPU socket的硬件,会碰到由于vCPU在不同物理CPU上浮动导致测试RFC2544时出现少量丢包的现象,测试结果非常不稳定.可以将vCPU绑 ...

  10. Swift protocol extension method is called instead of method implemented in subclass

    Swift protocol extension method is called instead of method implemented in subclass protocol MyProto ...