HDU5690 All X(快速幂)
来源:互联网 发布:魅色软件官方网站 编辑:程序博客网 时间:2024/06/05 10:44
All X
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2549 Accepted Submission(s): 1055
Problem Description
F(x,m) 代表一个全是由数字x组成的m位数字。请计算,以下式子是否成立:
F(x,m) mod k ≡ c
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”,代表四个数字,是否能够满足题目中给的公式。
Sample Input31 3 5 21 3 5 13 5 99 69Sample OutputCase #1:NoCase #2:YesCase #3:YesHint对于第一组测试数据:111 mod 5 = 1,公式不成立,所以答案是”No”,而第二组测试数据中满足如上公式,所以答案是 “Yes”。Source2016"百度之星" - 初赛(Astar Round2A)
解析:数学变形+快速幂。全是由数字x组成的m位数可表示为(10m-1)/9*x。
原式=x*(10^m-1)/9==c mod(k)
=x*10^m==9*c+x mod(k)
直接上快速幂求10^m
#include<cstdio> using namespace std; typedef long long int ll; ll quickmod(ll a,ll b,ll c) ///快速幂{ ll temp=1; while(b>0) { if(b%2==1) temp=temp*a%c; b/=2; a=a*a%c; } return temp%c; } int calc(ll x,ll m,ll k){ if(m==1LL) return x; int ret=calc(x,m>>1LL,k); ret=(ret*quickmod(10,m>>1,k)+ret)%k; return (m&1LL)?((ret*10+x)%k):ret; } int main(){ int T,kase=0; ll x,m,k,c; scanf("%d", &T); while(T--) { scanf("%I64d%I64d%I64d%I64d",&x,&m,&k,&c); printf("Case #%d:\n%s\n",++ kase,calc(x,m,k)==c?"Yes":"No"); } return 0; }
阅读全文
0 0
- hdu5690(快速幂||减半)All X
- HDU5690 All X(快速幂)
- 快速幂 hdu5690 All X
- hdu5690百度之星All X(矩阵快速幂)
- HDU5690: All X(大数取模,同余)
- hdu5690 快速模幂
- HDU5690-All X-循环节应用
- 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 【思维快速幂】
- 【矩阵快速幂】[2016"百度之星" - 初赛(Astar Round2A)]All X
- LeetCode - Pow(x, n) (快速幂)
- java把excel数据写入Oracle数据库(.xls文件)
- NPOI导出Excel并下载到客户端
- Git的使用和常见问题。
- texstudio 自动换行
- Caffe 环境配置
- HDU5690 All X(快速幂)
- archlinux 安装后无法上网解决方法
- 打击盗版的好办法
- 多文件编译棘手问题
- 【机器学习】pandas中Series和DataFrame
- Word2003入门动画教程31:显示文档中的绘图网格
- HC-SR04 超声波测距模块说明
- 编译内核make uImage出错“mkimage" command not found…”
- 用指针将三个整数从小到大排序