online_judge_1081
来源:互联网 发布:淘宝大学在哪里进 编辑:程序博客网 时间:2024/06/10 03:28
说明:本题参考才做出来 http://www.educity.cn/wenda/369708.html
#include <stdio.h>#include <stdlib.h>#include <string.h>#define M 10000int main(){ int a0,a1,p,q,k; int result; int d[4],t[4],a[4]; while(~scanf("%d%d%d%d%d",&a0,&a1,&p,&q,&k)) { a0%=M; a1%=M; if(k==0) result=a0; else if(k==1) result=a1; else { d[0]=p%M; d[1]=q%M; d[2]=1; d[3]=0; t[0]=t[3]=1; t[1]=t[2]=0; memcpy(a,t,4*sizeof(int)); k--; while(k>=1) { if((k&1)==1) { a[0]=(t[0]*d[0]+t[1]*d[2])%M; a[1]=(t[0]*d[1]+t[1]*d[3])%M; a[2]=(t[2]*d[0]+t[3]*d[2])%M; a[3]=(t[2]*d[1]+t[3]*d[3])%M; memcpy(t,a,4*sizeof(int)); } a[0]=(d[0]*d[0]+d[1]*d[2])%M; a[1]=(d[0]*d[1]+d[1]*d[3])%M; a[2]=(d[2]*d[0]+d[3]*d[2])%M; a[3]=(d[2]*d[1]+d[3]*d[3])%M; memcpy(d,a,4*sizeof(int)); k>>=1; } result=(t[0]*a1+t[1]*a0)%M; } printf("%d\n",result); } return 0;}/*此方法无法提交,时间复杂度大了!int main(){ int a0,a1,p,q,k; int i,t; while(~scanf("%d%d%d%d%d",&a0,&a1,&p,&q,&k)) { p%=M; q%=M; a0%=M; a1%=M; for(i=0;i<k;i++) { t=a1*p+a0*q; t%=M; a0=a1; a1=t; } printf("%d\n",a0); } return 0;}*/
这个题目很有意思,我真心扛不住。借鉴网上各位大牛的思想才搞出来!
0 0
- online_judge_1081
- ROS 学习系列 -- RViz中移动机器人来学习 URDF,TF,base_link, map,odom和odom 主题的关系
- 疯狂的数组名
- POJ 2387 || Til the Cows Come Home(最短路,dijkstra
- TestNG 编写带有依赖的测试用例
- IOS GCD的5种队列用法和异步、同步操作
- online_judge_1081
- 第十二章 trie路由--基于Linux3.10
- 【手机游戏开发优化篇】详解手游[体积]及[运行内存]的优化篇!
- sopcls6
- 用二叉树表示树
- 欢迎使用CSDN-markdown编辑器
- 黑马程序员--java基础--网络编程
- Visual Studio IDE lib导入方式
- 认识Hash 函数及其重要性