题目链接:点击查看

题目大意:给定x和M,已知

%M

题目解析:这种公式题在之前已经证明过做法,详见:点击查看

这道题与hdu4565的不同之处就是,这里的n=给的特别的大,而且M不确定,所以没法用费马小定理降幂去做

但从网上看大牛的解析知道,原来这个题是有循环群的,只要先找到()的一个循环群,就可以将()变到可以处理的范

围内了,剩下的做法就和hdu4565一个样了

对了记得最后结果需要减一,因为这个题要求的是y的整数部分,还是需要注意一下负数取模的情况

上代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<sstream>
#include<cmath>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=2;LL mod;struct M
{LL a[N][N];
};M operator*(M a,M b)
{M temp;memset(temp.a,0,sizeof(temp.a));for(LL i=0;i<N;i++)for(LL j=0;j<N;j++){temp.a[i][j]=0;for(LL k=0;k<N;k++){temp.a[i][j]=(temp.a[i][j]+((a.a[i][k]*b.a[k][j])%mod+mod)%mod)%mod;}}return temp;
} M q_pow(M a,LL n)
{M ans;memset(ans.a,0,sizeof(ans.a));for(LL i=0;i<N;i++)ans.a[i][i]=1;while(n){if(n&1)ans=ans*a;a=a*a;n>>=1;}return ans;
}int q_pow(LL a,LL b,LL mod)
{LL ans=1;while(b){if(b&1)ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans;
}int MOD[46337+100];int cir[46337+100];void find(int mod)//找到循环节
{cir[0]=2;cir[1]=10;for(int i=2;;i++){cir[i]=((10*cir[i-1]-cir[i-2]+mod)%mod+mod)%mod;if(cir[i]==cir[1]&&cir[i-1]==cir[0]){MOD[mod]=i-1;break;}}return;
}int main()
{
//  freopen("input.txt","r",stdin);LL n;int w;cin>>w;int kase=0;memset(MOD,0,sizeof(MOD));while(w--){LL x,m;scanf("%lld%lld",&x,&m);mod=m;if(!MOD[m])find(m);mod=m;
//      cout<<MOD[m]<<endl;n=(q_pow(2,x,MOD[m])+1)%MOD[m];if(n==1){cout<<10%m<<endl;continue;}M start;start.a[1][1]=0;start.a[0][0]=10;start.a[1][0]=-1;start.a[0][1]=1;M ans;memset(ans.a,0,sizeof(ans.a));ans.a[0][0]=10;ans.a[0][1]=2;M res=q_pow(start,n-1);printf("Case #%d: %lld\n",++kase,(((ans*res).a[0][0]+mod)%mod-1+mod)%mod);
/*      M temp=q_pow(start,2);temp=ans*temp;for(int i=0;i<N;i++){for(int j=0;j<N;j++)cout<<temp.a[i][j]<<' ';cout<<endl;}*/}return 0;
} 

HDU - 5451 Best Solver(循环群+矩阵快速幂)相关推荐

  1. hdu 5451 Best Solver 矩阵循环群+矩阵快速幂

    http://acm.hdu.edu.cn/showproblem.php?pid=5451 题意:给定x    求解 思路: 由斐波那契数列的两种表示方法, 之后可以转化为 线性表示 F[n] = ...

  2. HDU - 4686 Arc of Dream(矩阵快速幂,水题)

    题目链接:点击查看 题目大意:给出定义: 现在依次给出n,A0,AX,AY,B0,BX,BY 求Aod的第n项对1e9+7取模后的结果 题目分析: 简单矩阵快速幂 首先化简一下: 初始矩阵:(取n=1 ...

  3. HDU 5950 Recursive sequence(矩阵快速幂)

    题目链接:Recursive sequence 题意:给出前两项和递推式,求第n项的值. 题解:递推式为:$F[i]=F[i-1]+2*f[i-2]+i^4$ 主要问题是$i^4$处理,容易想到用矩阵 ...

  4. HDU - 5411 CRB and Puzzle 矩阵快速幂

    HDU - 5411 考虑直接dp会T, 用矩阵优化一下就好了. #include<bits/stdc++.h> #define LL long long #define LD long ...

  5. HDU 4291 A Short problem 矩阵快速幂 循环节

    题解思路: 构造矩阵,矩阵乘法计算还是t; 需要找循环节;   (注意因为是复合函数,不可以在里面取mod) 暴力跑只有可以找到g(222222224)%1e9==g(0)%1e9; 所以 g(g(n ...

  6. 【HDU - 6185】Covering(矩阵快速幂优化二维dp,高斯消元,轮廓线dp打表)

    题干: Bob's school has a big playground, boys and girls always play games here after school. To protec ...

  7. HDU 6185 Covering 矩阵快速幂 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...

  8. 【HDU - 4990】 Reading comprehension (构造+矩阵快速幂)

    题干: Read the program below carefully then answer the question.  #pragma comment(linker, "/STACK ...

  9. HDU 1757 A Simple Math Problem(矩阵快速幂)

    题目链接 题意 :给你m和k, 让你求f(k)%m.如果k<10,f(k) = k,否则 f(k) = a0 * f(k-1) + a1 * f(k-2) + a2 * f(k-3) + -- ...

最新文章

  1. labview简易计算机实验报告,labview实验报告..doc
  2. 剑指offer:面试题17. 打印从1到最大的n位数
  3. ASP.NET中数据库数据导入Excel并打印
  4. [云炬创业管理笔记]第三章打造优秀创业团队讨论1
  5. boost::test模块测试树管理单元测试
  6. Xilinx视频加速技术专场
  7. 数据科学 python_为什么需要以数据科学家的身份学习Python的7大理由
  8. mysql存储过程实验几轮_想问下数据库中有关存储过程的实验,求大神!
  9. Access、CorelDRAW总结
  10. 【路径规划】基于matlab粒子群融合遗传算法栅格地图路径规划【含Matlab源码 526期】
  11. 计算机精品学习资料大放送
  12. 注册表清理软件测试自学,注册表检测及修复工具(RegClean Pro)
  13. python网络爬虫实战解析
  14. 西瓜书重温(七): 贝叶斯分类器(手推+代码demo)
  15. 机械工程c语言第一学期考试题,科学出版社机械工程图学习题集1~10章答案.ppt
  16. ClickHouse SAMPLE 采样子句介绍
  17. 【暴力破解】medusacrowbar工具
  18. 2018 Android面经分享(京东,百度,陌陌,58到家等知名公司)
  19. 2022-2027年中国闪速存储器集成电路行业市场深度分析及发展战略规划报告
  20. win10安装提示“我们无法创建新的分区”

热门文章

  1. MySQL高级 - 内存优化 - InnoDB内存优化
  2. 反应堆Reactor
  3. 后台服务系统之编写服务提供方实现
  4. Spring Boot整合@Cacheable注解使用
  5. MySQL8.0允许外部访问
  6. html的属性与css的属性,HTML的属性和css基础
  7. Lambda表达式的基础知识
  8. gradle 构建完成自动删除_Gradle 6.6 RC6 发布,引入配置缓存特性,大幅提升构建性能
  9. pytorch教程龙曲良06-10
  10. 互联网协议套件(TCP/IP)及七层OSI模型