All X

Time Limit: 2000/1000 MS (Java/Others)   

 Memory Limit: 65536/65536 K (Java/Others)

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≤10^10

0≤c<k≤10,000

 
Output
 
对于每组数据,输出两行:
第一行输出:"Case #i:"。i代表第i组测试数据。
第二行输出“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
 
 同余的性质还需要熟悉。
思路:
 
m个x组成的数可以表示为x*(1+10+10^2+...+10^m-1)=x*(10^m-1)/9;
即x*(10^m-1)/9%k==c?    x*(10^m-1)%(9*k)==9*c
 
同余的性质:
  (1)自反性:a≡a(mod m).
  (2)对称性:若a≡b(mod m),则b≡a(mod m).
  (3)传递性:若a≡b(mod m),b≡c(mod m),则a≡c(mod m).
 
   若a1≡b1(mod m),a2≡b2(mod m),
  (4) 则a1+a2≡b1+b2(mod m)
    推论:若a+b≡c(mod m),则a≡c-b(mod m)
  (5)  a1a2≡b1b2(mod m).
   推论1:若a≡b(mod m),则ak≡bk(mod m),其中k为整数.
     推论2:若a≡b(mod m),则a^n≡b^n(mod m),其中n为自然数.
 
 
  (6)  若ac≡bc(mod m),(m,c)=d, 则a≡b(mod m/d).
    特别地,当(m,c)=1是,有a≡b(mod m).
  (7)  若a≡b(mod m),则ak≡bk(mod mk),其中k为大于零的整数;
     若a≡b(mod m),d为a,b及m 的任一正公约数,则a/d≡b/d(mod (m/d)).
  (8)  a≡b(mod mi),(1<=i<=n),则a≡b(mod [m1,m2,…,mn]).
  (9)  若a≡b(mod m),且d|m,则a≡b(mod d)
 
此题用到了第(7)条性质。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define LL long long LL powMod(LL base,LL m,int mod)
{
LL res=;
while(m)
{
if(m&)
res=(res*base)%mod;
base=(base*base)%mod;
m>>=;
}
return(res%mod);
} int main()
{
int x,k,c,cas=;
LL m;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%I64d%d%d",&x,&m,&k,&c);
//cout<<"*"<<endl;
int MOD=*k;
int tmp=powMod(,m,MOD);
//cout<<tmp<<endl;
tmp=(tmp*x)%MOD;
tmp-=(x%MOD);
//cout<<tmp<<endl;
printf("Case #%d:\n",cas++);
if(tmp==*c)
printf("Yes\n");
else
printf("No\n");
}
return ;
}

HDU_5690_快速幂,同余的性质的更多相关文章

  1. 洛谷 P1226 【模板】快速幂||取余运算

    题目链接 https://www.luogu.org/problemnew/show/P1226 题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 ...

  2. hdu1061Rightmost Digit(快速幂取余)

    Rightmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  3. LightOJ - 1282 - Leading and Trailing(数学技巧,快速幂取余)

    链接: https://vjudge.net/problem/LightOJ-1282 题意: You are given two integers: n and k, your task is to ...

  4. 洛谷P1226 【模板】快速幂||取余运算

    题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 输入格式: 三个整数b,p,k. 输出格式: 输出“b^p mod k=s” s为运算结果 S1: ...

  5. LuoguP1226 【模板】快速幂||取余运算

    题目链接:https://www.luogu.org/problemnew/show/P1226 第一次学快速幂,将别人对快速幂原理的解释简要概括一下: 计算a^b时,直接乘的话计算次数为b,而快速幂 ...

  6. [每日一题2020.06.15]P1226 【模板】快速幂取余运算

    我是题目 快速幂就是快速求 \(a^b\)的一种算法 快速幂 思想 : 比如我要求 \(6^9\) 首先将幂转化为二进制形式 : \[6^9 = 6^{1001} \tag{1} \] 可以得到 : ...

  7. 【模板】快速幂&取余运算

    输入\(b\),\(p\),\(k\)的值,求\(b^p mod k\)的值.其中\(b\),\(p\),\(k^2\)为长整型数. 1.普通做法 \(print\) \(pow(b,p)\)\(mo ...

  8. (分治法 快速幂)P1226 【模板】快速幂||取余运算 洛谷

    题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 输入格式: 三个整数b,p,k. 输出格式: 输出“b^p mod k=s” s为运算结果 输入输 ...

  9. 1226 快速幂 取余运算 洛谷luogu

    还记得 前段时间学习二进制快速幂有多崩溃 当然这次方法略有不同 居然轻轻松松的 题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 输入格式: 三个整 ...

随机推荐

  1. Mysql双主自增长冲突处理

    Mysql双主自增长冲突处理   多主互备和主从复制有一些区别,因为多主中都可以对服务器有写权限,所以设计到自增长重复问题   出现的问题(多主自增长ID重复)  1:首先我们通过A,B的test表结 ...

  2. [luoguP3275] [SCOI2011]糖果(差分约束)

    传送门 差分约束裸题 但是坑! 有一个点是长为10W的链,需要逆序加边才能过(真是玄学) 还有各种坑爹数据 开longlong ——代码 #include <cstdio> #includ ...

  3. hdu 4862KM&最小费用最大流

    /*最小K路径覆盖的模型,用费用流或者KM算法解决, 构造二部图,X部有N*M个节点,源点向X部每个节点连一条边, 流量1,费用0,Y部有N*M个节点,每个节点向汇点连一条边,流量1, 费用0,如果X ...

  4. Spring面试总结

    Spring面试总结 文件夹(?)[+] 1.什么是spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spr ...

  5. IO 字节流学习

    复制图片和MP3 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.Fil ...

  6. 【POJ 2983】Is the Information Reliable?(差分约束系统)

    id=2983">[POJ 2983]Is the Information Reliable? (差分约束系统) Is the Information Reliable? Time L ...

  7. MapReduce:具体解释Shuffle过程

    Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必需要了解的.我看过非常多相关的资料,但每次看完都云里雾里的绕着,非常难理清大致的逻 ...

  8. .m文件导入C++头文件带来的错误

    这几天的工作挖了不少的坑.遇到了各种千奇百怪的错误,如今好好总结一下. 新建一个project,然后新建HelloCPP.h,HelloCPP.cpp文件.HelloCPP.h文件内容例如以下: #i ...

  9. #定位系统性能瓶颈# sysdig

    安装方法: curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash [root@l ...

  10. 通过指针访问C++对象的私有成员

    C++对象的私有成员是禁止类外的访问的.但是我们仍然可以通过指针访问C++对象的私有成员. #include <iostream> using namespace std; class A ...