POJ 5690 All X

来源:互联网 发布:node path resolve 编辑:程序博客网 时间:2024/03/29 13:24


Sample Input
31 3 5 21 3 5 13 5 99 69
 

Sample Output
Case #1:NoCase #2:YesCase #3:Yes
Hint
对于第一组测试数据:111 mod 5 = 1,公式不成立,所以答案是”No”,而第二组测试数据中满足如上公式,所以答案是 “Yes”。
 

Source
2016"百度之星" - 初赛(Astar Round2A) 



x*(10^m-1)/9==c  mod(k)

    =x*10^m==9*c+x    mod(k)

巧妙的运用 111111=(10^6-1)/9
#include <iostream>#include <cstdio>#include <cstring>using namespace std;__int64 mod_pow(__int64 x,__int64 n, __int64 mod){__int64 res=1;while(n>0){if(n&1)res=res*x%mod;//二进制最低位为1乘上x^(2^i)x=x*x%mod;           //x等于x的平方,二进制是快速幂的关键n>>=1;}return res;}int main(){  int t;  __int64 x,m,k,c,p;  cin>>t; for(int i=1;i<=t;i++)  {      printf("Case #%d:\n",i);      cin>>x>>m>>k>>c;      p=mod_pow(10,m,k);      if(p*x%k==(9*c+x)%k)printf("Yes\n");      else printf("No\n");  }    return 0;}



0 0
原创粉丝点击