Bestcoder 大数求余
2016-05-21 20:08
344 查看
大数求余
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
Problem Description
F(x,
m)F(x,m) 代表一个全是由数字xx组成的mm位数
4000
字。请计算,以下式子是否成立:
F(x,m)\
mod\ k\ \equiv \ cF(x,m) mod k ≡ c
Input
第一行一个整数TT,表示TT组数据。
每组测试数据占一行,包含四个数字x,m,k,cx,m,k,c
1\leq
x\leq 91≤x≤9
1\leq
m\leq 10^{10}1≤m≤1010
0\leq
c< k\leq 10,0000≤c<k≤10,000
Output
对于每组数据,输出两行: 第一行输出:"Case #i:"。ii代表第ii组测试数据。
第二行输出“Yes” 或者 “No”,代表四个数字,是否能够满足题目中给的公式。
Sample Input
3 1 3 5 2 1 3 5 1 3 5 99 69
Sample Output
Case #1: No Case #2: Yes Case #3: Yes
using namespace std; int visit[11000]; int num[11000]; int main() { int t,sum = 1; scanf("%d",&t); while(t--) { int x,m,k,c; scanf("%d%d%d%d",&x,&m,&k,&c); memset(visit,0,sizeof(visit)); memset(num,0,sizeof(num)); int ans = 0,cas = 0; while(1) { ans = ans * 10 + x; ans = ans % k; if(visit[ans] == 1) //找到循环点跳出 break; else visit[ans] = 1; num[cas++] = ans;//记录余数,case代表周期个数 } m = (m-1) % cas;//求余的时候要注意,余数只有(0~ cas-1 ) printf("Case #%d:\n",sum++); if(num[m] == c) printf("Yes\n"); else printf("No\n"); } return 0; }
相关文章推荐
- python str.title( )和str.istitle( )
- 高效计算余数
- Markdown 使用简单介绍
- 51nod B君的圆锥(数学)
- mysql5.7.12 zip免安装版本配置
- BZOJ 2330 [SCOI 2011] 糖果 差分约束
- BSG白山极客挑战赛题解 E 【二分+树状数组】
- 纯JS实现slideToggle动画,慢慢下拉打开
- 虚拟化学习笔记1-概述
- 数字图像处理的研究内容
- 进程与线程的区别
- Mac OS X/ Linux 下源码安装 opencv
- js 案例
- 17、对于JavaScript中匿名函数的理解
- HDU1006区间合并
- JavaScript 函数
- C# UDP服务编程(NativeErrorCode = 10054)
- 第二章 Socket用法详解
- 【会议】QCon2016会议整理(三)——开源及微服务
- 方块填数