今早水出的第一道题,带着情绪做的,竟然1Y了,确实惊奇。这道简单的线性递推取模,直接递推是不行的,因为n的规模达到了100,000,000,要么超时要么超内存。可以用矩阵快速幂来搞,根据题意构建出对应的矩阵后即可(第一次写的,用结构体来进行矩阵相乘运算),代码如下:

 #include<cstdio>

 struct matrix{
int a,b,c,d;
matrix(int _a=, int _b=, int _c=, int _d=) {
a=_a; b=_b; c=_c; d=_d;
}
matrix operator *(const matrix &m2){
return matrix((a*m2.a%+b*m2.c%)%, (a*m2.b%+b*m2.d%)%, (c*m2.a%+d*m2.c%)%, (c*m2.b%+d*m2.d%)%);
}
matrix square(){
return matrix((a*a%+b*c%)%, b*(a+d)%, c*(a+d)%, (b*c%+d*d%)%);
}
}; int calcu(matrix m, int p)
{
matrix ans(,,,);
while(p){
if(p&) ans= ans*m;
m= m.square();
p>>=;
}
return (ans.a+ans.c)%;
} int main()
{
int a,b,n;
while(scanf("%d%d%d",&a,&b,&n),a){
if(n<=) puts("");
else printf("%d\n", calcu(matrix(a,,b,),n-));
}
return ;
}

  实际上,这道题还有更优的做法,就是找循环周期,因为f[n]只与前两个有关,而且是模7,所以它的循环周期是7*7-1=48(为何这样算我也不知如何证明,留待以后再想),下面也附上AC代码:

 #include<cstdio>
int f[]= {,,}; int main()
{
int a,b,n,i;
while(scanf("%d%d%d",&a,&b,&n), a){
for(i=; i<=; ++i)
f[i]= (a*f[i-]+b*f[i-])%;
f[]= f[];
printf("%d\n",f[n%]);
}
return ;
}

hdu 1005 简单题的更多相关文章

  1. HDU 1753 大明A+B(字符串模拟,简单题)

    简单题,但要考虑一些细节: 前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出 然后处理起来就比较麻烦了. 题目链接 我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜 ...

  2. (hdu 简单题 128道)平方和与立方和(求一个区间的立方和和平方和)

    题目: 平方和与立方和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  3. HDU 6106 17多校6 Classes(容斥简单题)

    Problem Description The school set up three elective courses, assuming that these courses are A, B, ...

  4. HDU 6463.超级无敌简单题-卡边界的暴力 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    超级无敌简单题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  5. HDU 1005(周期问题)

    HDU 1005 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Descript ...

  6. acm.njupt 1001-1026 简单题

    点击可展开上面目录 Acm.njupt 1001-1026简单题 第一页许多是简单题,每题拿出来说说,没有必要,也说不了什么. 直接贴上AC的代码.初学者一题题做,看看别人的AC代码,寻找自己的问题. ...

  7. 【转载】 HDU 动态规划46题【只提供思路与状态转移方程】

    1.Robberies 连接 :http://acm.hdu.edu.cn/showproblem.php?pid=2955      背包;第一次做的时候把概率当做背包(放大100000倍化为整数) ...

  8. BZOJ 2683: 简单题

    2683: 简单题 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 913  Solved: 379[Submit][Status][Discuss] ...

  9. 【BZOJ-1176&2683】Mokia&简单题 CDQ分治

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 1854  Solved: 821[Submit][St ...

随机推荐

  1. python :列表 字典 集合 类 ----局部变量可以改全局变量

    #列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def ...

  2. string xml json格式区别

    string 是一种最普通的储存一串字符的数据格式 xml 是一种可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 它非常适合万维网传输,提供统一的方 ...

  3. Animation在每一帧中的执行顺序测试

    测试代码: void Update() { transform.position = Vector3.zero; } void LateUpdate() { Debug.Log(transform.p ...

  4. Poj(2771),最大独立集

    题目链接:http://poj.org/problem?id=2771 Guardian of Decency Time Limit: 3000MS   Memory Limit: 65536K To ...

  5. ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛 A Simple Job

    描述 Institute of Computational Linguistics (ICL), Peking University is an interdisciplinary institute ...

  6. Codeforces Round #370 (Div. 2) C

    Description Memory is now interested in the de-evolution of objects, specifically triangles. He star ...

  7. centos 001

    CentOS6.5中修改yum源 在自己安装的CentOS6.5中使用yum安装软件,总是提示404错误信息,百度后发现原来要设置yum源. 在安装完CentOS后一般需要修改yum源,才能够在安装更 ...

  8. .Net操作.exe文件

    Process proc = new Process(); proc.StartInfo.FileName = @"D:\Program Files\Foxmail\Foxmail.exe& ...

  9. 二SERVLET(2)

    转载自http://www.cnblogs.com/xdp-gacl/p/3763559.html 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件 ...

  10. Create,Insert

    创建表 create table people ( id int ,name ) ) create table toys ( id int ,name ) ,people_id int ) CREAT ...