给定一个数,判断是否存在一个全由8组成的数为这个数的倍数

若存在则输出这个数的长度,否则输出0

/*
个人感觉很神的一道题目。
如果有解的话,会有一个p满足:(10^x-1)/9*8=L*p
=> 10^x-1=9*L*p/8
设m=9*L/gcd(L,8)
则存在p1使得 10^x-1=m*p1
=> 10^x=1(mod m)
根据欧拉定理 10^φ(m)=1(mod m)
所以x一定是φ(m)的因数(这好像是某个定理)。
*/
#include<iostream>
#include<cstdio>
#define lon long long
#define N 400010
#ifdef unix
#define LL "%lld"
#else
#define LL "%I64d"
#endif
using namespace std;
int prime[N],f[N],num,qlen;
lon q[N];
void get_prime(){
for(int i=;i<N;i++){
if(!f[i]) prime[++num]=i;
for(int j=;j<=num;j++){
if(i*prime[j]>=N) break;
f[i*prime[j]]=;
if(i%prime[j]==) break;
}
}
}
lon gcd(lon a,lon b){
if(!b) return a;
return gcd(b,a%b);
}
lon euler(lon x){
lon res=x;
for(lon i=;i*i<=x;i++)
if(x%i==){
res-=res/i;
while(x%i==) x/=i;
}
if(x>) res-=res/x;
return res;
}
void get_q(lon n){
qlen=;
for(int i=;i<=num&&n>;i++){
while(n%(lon)prime[i]==){
n/=prime[i];
q[++qlen]=prime[i];
}
}
if(n>) q[++qlen]=n;
}
lon mul(lon a,lon b,lon mod){
lon base=a,r=;
while(b){
if(b&) r+=base;r%=mod;
base+=base;base%=mod;
b>>=;
}
return r;
}
lon poww(lon a,lon b,lon mod){
lon base=a,r=;
while(b){
if(b&) r=mul(r,base,mod);
base=mul(base,base,mod);
b>>=;
}
return r;
}
int main(){
int cas=;lon L;get_prime();
while(scanf(LL,&L)&&L){
lon m=*L/gcd(L,);
if(gcd(m,)>){
printf("Case %d: 0\n",++cas);
continue;
}
lon x=euler(m);get_q(x);
for(int i=;i<=qlen;i++){
if(poww(,x/q[i],m)==){
x/=q[i];
}
}
printf("Case %d: ",++cas);
printf(LL,x);printf("\n");
}
return ;
}
 

最新文章

  1. PHP与JAVA构造函数的区别
  2. 如何配置pch文件
  3. Vertica并发DML操作性能瓶颈的产生与优化(转)
  4. 一个很奇怪的问题,程序没有改动加密参数应该也没有变化.但是两次的加密结果却不一致.md5加密问题
  5. 【javascript杂谈】你所不知道的replace函数
  6. IOS判断网络环境
  7. 开启Nginx的gzip压缩功能详解
  8. Spring与Hibernate整合之通用Dao的实现
  9. 【Android实战开发】3G技术和Android发展简介
  10. Oracle的总体回顾
  11. 在Mac上配置/使用Github
  12. hdu 1859 最小长方形
  13. awstats + tomcat + windows
  14. 201521123002 《Java程序设计》第13周学习总结
  15. vue.js介绍,常用指令,事件,以及制作简易留言版
  16. CentOS 7 NetworkManager Keeps Overwriting /etc/resolv.conf
  17. Java反射获取字节码以及判断类型
  18. MySQL字符串进行加减乘除的运算
  19. Liunx中fstab文件详解
  20. wpf binging Class 双向绑定 需要实现的接口

热门文章

  1. windows系统下的两个批处理命令
  2. 2d游戏中的射线与矩形检测碰撞
  3. ReactiveCocoa概念解释篇
  4. sql_autoload_register()函数
  5. k8s的资源限制及资源请求
  6. python爬虫: 豆瓣电影top250数据分析
  7. 让Web站点崩溃最常见的七大原因
  8. virtualbox安装win7系统报错(“FATAL:No bootable medium found!”)
  9. 多本Python极速入门最佳书籍,不可错过的Python学习资料!
  10. CentOS 7 安装 配置 Nginx + PHP