题目链接

Description

Chinese people think of ‘8’ as the lucky digit. Bob also likes digit ‘8’. Moreover, Bob has his own lucky number L. Now he wants to construct his luckiest number which is the minimum among all positive integers that are a multiple of L and consist of only digit ‘8’.

Input

The input consists of multiple test cases. Each test case contains exactly one line containing L(1 ≤ L ≤ 2,000,000,000).

The last test case is followed by a line containing a zero.

Output

For each test case, print a line containing the test case number( beginning with 1) followed by a integer which is the length of Bob’s luckiest number. If Bob can’t construct his luckiest number, print a zero.

Sample Input

8
11
16
0

Sample Output

Case 1: 1
Case 2: 2
Case 3: 0


打不来公式的孩子……证明部分可见李煜东《算法竞赛进阶指南》和大佬博客,我代码对照着调了错,发现乘法那里还只能像大佬那样写成函数……

#include<cstdio>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=5e4+10;
ll l;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
bool iscomp[N];
int prime[N],p;
vector<int>y;
void primetable()
{for(int i=2;i<=50000;i++){if(!iscomp[i])prime[p++]=i;for(int j=0;j<p&&i*prime[j]<=50000;j++){iscomp[prime[j]*i]=1;if(i%prime[j]==0)break;}}
}
ll phi(ll n)
{ll ans=n;for(int i=0;prime[i]<=sqrt(n);i++)if(n%prime[i]==0){ans=ans/prime[i]*(prime[i]-1);while(n%prime[i]==0)n/=prime[i];}if(n>1)ans=ans/n*(n-1);return ans;
}
bool flag;
int ca;
ll mul(ll a,ll b,ll mod)
{ll ans=0;while(b){if(b&1)ans=(ans+a)%mod;a=(a+a)%mod;b>>=1;}return ans;
}
ll qpow(ll num,ll mi,ll mod)
{ll ans=1;while(mi){if(mi&1)ans=mul(ans,num,mod);num=mul(num,num,mod);mi>>=1;}return ans;
}
void div(ll n)
{y.clear();for(int i=0;prime[i]<=sqrt(n);i++)while(n%prime[i]==0){y.push_back(prime[i]);n/=prime[i];}if(n>1)y.push_back(n);
}
int main()
{//freopen("in.txt","r",stdin);primetable();while(scanf("%lld",&l)&&l){flag=true;l=l*9/gcd(l,8);if(gcd(l,10)!=1){printf("Case %d: 0\n",++ca);continue;}ll ph=phi(l),len=ph;while(flag){flag=false;div(ph);//得到所有约数for(int i=0;i<y.size();i++){if(qpow(10,ph/y[i],l)==1){flag=true;len=min(len,ph/y[i]);}} ph=len;}printf("Case %d: %lld\n",++ca,len);}return 0;
}

总结

依旧是一个公式推导

【题解】poj3696 The Luckiest number 欧拉函数+快速幂相关推荐

  1. 小于n与n互质的所有数的和(欧拉函数+快速幂)

    欧拉函数的含义:对于正整数n, φ(n)的值表示 小于n并且与n互质 的整数 个数. 欧拉函数公式:φ(x)=x*(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)--(1-1/pn), ...

  2. POJ 3696 欧拉函数+快速幂

    题目的意思大概就是问是否存在一串全是8的数字是L的倍数 直接想没有什么想法,要想到用简洁的形式将这个数字表示出来,对于每一位都是8的数字我们可以用 X=8*(10k-1)/9的形式表示出来,那么题目的 ...

  3. 牛客 华华给月月出题 (积性函数+欧拉筛+快速幂)

    题目描述 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月出了一道类似的题: ⊕符号表示异或和,详见样例解释. 虽然月月写了个程序暴力的算出了答案,但是为了确保自己的答案没有错,希 ...

  4. poj2478 Farey Sequence (欧拉函数)

    Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...

  5. 【bzoj2226】[Spoj 5971] LCMSum 欧拉函数

    题目描述 Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes the Leas ...

  6. 【数学专题】约数个数与欧拉函数

    整理的算法模板合集: ACM模板 目录 一.约数个数 1. AcWing 1291. 轻拍牛头 2. AcWing 1294. 樱花 2.1 AcWing 197. 阶乘分解 3. AcWing 19 ...

  7. 【bzoj2186】[Sdoi2008]沙拉公主的困惑 欧拉函数

    题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的 ...

  8. (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)

    题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...

  9. 欧拉函数和最大公约数的组合应用

    这种问题一般都是给出限制条件:给你一个数N(N一般很大),使得在1~N之间能够找到X使得X满足gcd( X ,  N  ) >= M,然后求解相关的问题.          分析:这是一种统计类 ...

最新文章

  1. HDU3338 Kakuro Extension(最大流+思维构图)
  2. Django 序列化三种方式 对象 列表 元组
  3. 与nlp相关的模型概览
  4. 【存储知识学习】第三章磁盘原理与技术3.6磁盘控制器、驱动器控制电路和磁盘控制器驱动程序and3.7内部传输速率和外部传输速率--《大话存储》阅读笔记
  5. Java生鲜电商平台-生鲜供应链(采购管理)
  6. CDH5 Hadoop如何支持读写OSS
  7. jdk优先级队列是如何实现的
  8. HFSS、ANSYS Electronics Desktop安装完成后无法启动、无法使用、无法打开问题的解决办法。
  9. python自动上传图片_Python+selenium自动上传博客图片至新浪微博相册
  10. 亲爱的热爱的百度云全集资源
  11. MSP430系列单片机的DMA使用全面认识
  12. (四)52周存钱挑战3.0-----for循环遍历列表、range()
  13. 以下关于python二维数据的描述中错误的是_关于二维数据CSV存储问题,以下选项中描述错误的是‪‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‫:...
  14. TTL(RGB)接口液晶显示屏的调试方法
  15. js中的class解构
  16. 精通 CSS+DIV 网页样式与布局 54
  17. 网络综合布线中配线架的作用是什么?应该怎样进行安装?
  18. 《硅谷产品》读书笔记
  19. 浪潮NF5280M5服务器做RAID装windows server2019系统保姆级教学
  20. 一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉

热门文章

  1. 避免3种响应式设计灾祸
  2. 云虚拟主机有哪些优势?
  3. 阿里云AIoT正式发布IoT安全中心和IoT Studio 3.0,进一步巩固AIoT“云网边端”基础能力
  4. Vue+Ant Design of Vue上传文件,并限制上传文件数及限制其类型
  5. TortoiseGit 常用操作说明
  6. 基于签证数据的国际关系分析研究
  7. mysql内存持续上涨_MySql内存增长过快导至崩溃的问题
  8. 网站整体优化其一:数据库优化同步的情况
  9. 数字图像处理:基于NDVI的遥感影像植被提取
  10. java 内置排序函数_java排序函数