HDU - 5690 分治 + 快速幂思想
来源:互联网 发布:python黑客编程中文pdf 编辑:程序博客网 时间:2024/06/11 16:54
题意:
判断数位长度为m且每一位上的数字都是x的数模k的结果是否等于c。
思路:
也可以算是一种分治吧,把大的整数按数位折半考虑,类似于快速幂的处理方式,如果是偶数,前一半和后一半的结果相同,不需要重复处理,如果是奇数,合并的时候加上中间的x即可。
代码:
#include <bits/stdc++.h>using namespace std;typedef long long ll;ll pow_mod(ll a, ll n, ll mod) { ll res = 1; while (n) { if (n & 1) res = res * a % mod; a = a * a % mod; n >>= 1; } return res;}ll dfs(ll x, ll n, ll mod) { if (n == 1) return x; ll mid = n / 2, res; ll tmp = dfs(x, mid, mod); if (n & 1) res = (tmp * 10 + x) % mod * pow_mod(10, mid, mod) % mod; else res = (tmp * pow_mod(10, mid, mod)) % mod; return (res + tmp) % mod;}int main() { int T, cs = 0; scanf("%d", &T); while (T--) { ll x, m, k, c; scanf("%I64d%I64d%I64d%I64d", &x, &m, &k, &c); printf("Case #%d:\n", ++cs); if (dfs(x, m, k) == c) puts("Yes"); else puts("No"); } return 0;}
0 0
- HDU - 5690 分治 + 快速幂思想
- 快速排序算法-分治思想
- 分治思想之快速排序
- 分治思想之快速排序
- 快速幂取模(分治思想)
- 分治思想之快速排序
- hdu 2254(矩阵快速幂+分治)
- 【快速排序、合并排序与分治思想】
- 算法之分治思想和快速排序
- 快速解析 递归与分治思想
- 快速排序基于分治法的思想
- 快速排序 : 分治和递归思想
- 快速幂( 分治 )
- 分治思想
- 分治思想
- <菜鸟学算法-A排序(分治的思想:快速排序)>
- 快速排序(递归与分治的思想)
- Java使用分治递归的思想实现快速排序
- 点击可变暗的ImageView
- 设计模式(四)简单工厂模式
- securecrt使用技巧
- 怎么在CorelDRAW中把文档变为PDF文件
- 求单链表中倒数第k个结点
- HDU - 5690 分治 + 快速幂思想
- 第三章 系统总线
- Android ProgressBar 进度条
- 断点续传与多线程下载
- HDU_How Many Fibs求数列区间数目
- 线程状态
- 20、C#:使用VS2010生成dll文件
- 2017学习记录
- WEB 访问示意图