数论(快速幂) HDU-5690 All X
来源:互联网 发布:c 界面编程 编辑:程序博客网 时间:2024/05/27 09:46
All X
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1672 Accepted Submission(s): 729
Problem Description
Input
第一行一个整数T ,表示T 组数据。
每组测试数据占一行,包含四个数字x,m,k,c
1≤x≤9
1≤m≤1010
0≤c<k≤10,000
每组测试数据占一行,包含四个数字
Output
对于每组数据,输出两行:
第一行输出:"Case #i:"。i 代表第i 组测试数据。
第二行输出“Yes” 或者 “No”,代表四个数字,是否能够满足题目中给的公式。
第一行输出:"Case #i:"。
第二行输出“Yes” 或者 “No”,代表四个数字,是否能够满足题目中给的公式。
Sample Input
31 3 5 21 3 5 13 5 99 69
Sample Output
Case #1:NoCase #2:YesCase #3:YesHint对于第一组测试数据:111 mod 5 = 1,公式不成立,所以答案是”No”,而第二组测试数据中满足如上公式,所以答案是 “Yes”。
全是x的m位数可以算成(10^m-1)/9*x,由(10^m-1)/9*x%mod 同时扩大9倍, (10^m-1)*x%(9*mod) == 9*c。就可以用快速幂求出来了。
将all x转化的思想和扩大9倍削去分母,值得回味。。。
#include <iostream>#include <cstdio>#include <cstring>typedef long long ll;using namespace std;ll pow_mod(ll x, ll n, ll mod) { ll res = 1; while(n > 0) { if(n&1) res = res*x%mod; x = x*x%mod; n >>= 1; } return res;}int main(){ int T; ll x, m, c, k; ll res, j = 1; scanf("%d", &T); while(T--) { res = 0; scanf("%lld%lld%lld%lld", &x, &m, &k, &c); k *= 9; res = (pow_mod(10, m, k) - 1)*x%k; printf("Case #%d:\n", j++); if(res/9 == c) printf("Yes\n"); else printf("No\n"); } return 0;}
0 0
- 数论(快速幂) HDU-5690 All X
- hdu 5690 All X(快速幂)
- HDU 5690 All X(快速幂)
- hdu 5690 All X(快速幂)
- HDU 5690 All X 矩阵快速幂
- HDU 5690 All X【快速幂】
- HDU 5690 All X 【思维快速幂】
- POJ-5690-All X(快速幂/循环节)
- HDU 5690 All X
- hdu 5690 All X
- HDU 5690 All X
- hdu 5690 All X
- HDU 5690 ALL X
- HDU 5690 All X
- hdu 5690 All X
- HDU 5690-All X
- hdu-5690-All X
- HDU 5690:All X
- 机器视觉技术原理解析及解决方案
- 【Python】学习笔记——-8.3、面向对象高级编程:3.多重继承
- getComputedStyle与currentStyle获取样式(style/class)
- 高级排序-快速排序,最右边的值为枢纽
- 关于:SpringMVC中文乱码问题
- 数论(快速幂) HDU-5690 All X
- 使用高大上的pm2代替forever部署nodejs项目
- 高级排序-快速排序-利用三数据取中划分的快速排序算法
- DP经典 ----- 整数划分
- 【Python】学习笔记——-8.4、面向对象高级编程:4.定制类
- 面向对象静态代码块
- 高级排序-快速排序-使用插入排序来处理小于10个数据项的子数组,使快速排序性能发挥到极致。
- 最大公约数算法
- MyBatis 源码分析——生成Statement接口实例