POJ3696 The Luckiest Number 欧拉定理
昨天终于把欧拉定理的证明看明白了。。。于是兴冲冲地写了2道题,发现自己啥都不会qwq
题意:给定一个正整数L<=2E+9,求至少多少个8连在一起组成正整数是L的倍数。
这很有意思么。。。
首先,连续的8可表示为:8*(10^x-1)/9;
那么就是L|8*(10^x-1)/9 => 9*L|8*(10^x-1) ,求最小的x;
我们设d=gcd(L,8)
则9*L/d | 8/d*(10^x-1),因为此时9*L/d 和 8/d 互质,所以9*L/d | 10^x-1,所以 10^x ≡ 1 (mod 9*L/d);
然后要证明一个结论:a^x ≡ 1 (mod n)的最小正整数解x0能整除φ(n)
证明:
反证:设不能整除,则设φ(n)=q*x0+r;(1<=r<x0)
因为a^x0 ≡ 1 (mod n),所以a^(q*x0) ≡ 1(mod n)
又因为a^φ(n) ≡ 1 (mod n),所以a^r ≡ 1 (mod n)
因为r<x0,所以假设不成立;
证毕。
所以我们枚举每个φ(9*L/d) 的约数,用快速幂判断就好了。
#include<cstdio>
#include<iostream>
#include<algorithm>
#define ll long long
#define R register ll
using namespace std;
inline ll g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
ll a[],n,ans;
inline ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}
inline ll phi(ll n) {
R m=n; for(R i=;i*i<=n;++i) if(n%i==) {
m=m/i*(i-);
while(n%i==) n/=i;
} if(n>) m=m/n*(n-); return m;
}
inline ll mul(ll a,ll b) {
a%=n,b%=n; R c=(long double)a*b/n;
R ans=a*b-c*n; if(ans<) ans+=n;
if(ans>=n) ans-=n; return ans;
}
inline ll qpow(ll a,ll p) { R ret=;
for(;p;p>>=,a=mul(a,a)) if(p&) ret=mul(ret,a); return ret;
}
signed main() { R t=;
while(n=g(),n!=) { //cout<<n<<endl;
n=*n/gcd(,n);
printf("Case %d: ",++t);
if(gcd(,n)==) {
R p=phi(n),cnt=; //cout<<"PHI: "<<p<<endl;
for(R i=;i*i<=p;++i) if(p%i==) {
a[++cnt]=i;
if(i*i!=p) a[++cnt]=p/i;
} sort(a+,a+cnt+); R i;
for(i=;i<=cnt;++i) if(qpow(,a[i])==) break;
printf("%lld\n",a[i]);
} else printf("0\n");
}
}
2019.05.11
POJ3696 The Luckiest Number 欧拉定理的更多相关文章
- POJ3696 The Luckiest number
题意 Language:Default The Luckiest number Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7 ...
- POJ3696:The Luckiest number(欧拉函数||求某数最小的满足题意的因子)
Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his own ...
- [POJ3696]The Luckiest number(数论)
题目:http://poj.org/problem?id=3696 题意:给你一个数字L,你要求出一个数N,使得N是L的倍数,且N的每位数都必须是8,输出N的位数(如果不存在输出0) 分析: 首先我们 ...
- POJ_3696 The Luckiest number 【欧拉定理+同余式+对取模的理解】
一.题目 Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his ...
- poj 3696 The Luckiest Number
The Luckiest Number 题目大意:给你一个int范围内的正整数n,求这样的最小的x,使得:连续的x个8可以被n整除. 注释:如果无解输出0.poj多组数据,第i组数据前面加上Case ...
- poj_3696_The Luckiest number
Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his own ...
- HDU 2462 The Luckiest number
The Luckiest number Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Ori ...
- The Luckiest number(hdu2462)
The Luckiest number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- 「POJ3696」The Luckiest number【数论,欧拉函数】
# 题解 一道数论欧拉函数和欧拉定理的入门好题. 虽然我提交的时候POJ炸掉了,但是在hdu里面A掉了,应该是一样的吧. 首先我们需要求的这个数一定可以表示成\(\frac{(10^x-1)}{9}\ ...
随机推荐
- Operating System-Process(2)进程表&&中断处理
上一篇文章阐述了进程的基本信息,本文主要介绍进程的实现,主要内容: 进程表(Process Table or Process Control Blocks) 中断处理(Interrupt) 一.进程表 ...
- Maven运行JUnit测试(http://www.360doc.com/content/13/0927/15/7304817_317455642.shtml)
Maven单元测试 分类: maven 2012-05-09 15:17 1986人阅读 评论(1) 收藏 举报 maven测试junit单元测试javarandom 目录(?)[-] maven ...
- 杂项:Code(开源资源)
ylbtech-杂项:Code(开源资源) 1.返回顶部 1.CSDN http://code.csdn.net/ 2.腾讯·开源 http://code.tencent.com/ 3. 4. 5. ...
- ES6学习之数组扩展
扩展运算符(...将数组分割为用逗号分割的参数序列) console.log(...[1,2,3]) //1 2 3 可替换数组的apply写法: function test(x,y,z){ cons ...
- python 基础 列表 字符串转换
1. 字符串转列表 str1 = "hi hello world" print(str1.split(" "))输出:['hi', 'hello', 'worl ...
- linux日常管理-rsync后台服务方式-1
rsync的另外一种方式,写一个配置文件,放在etc下,通过一个命令启动他,它会监听一个端口,在客户端和服务端进行通信. 远程机器的配置文件 IP是192.168.1.117 配置文件的名字,写成这个 ...
- J2EE 学习路线
分享一个比较好的学习网站 http://edu.51cto.com/roadmap/view/id-86.html ================================J2EE=== ...
- 伪分布模式 hive查询
[root@node1 ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian ...
- fabric差异化部署mysql和lnmp
1.代码如下: vim lnmp.py ------------------------------------------> #!/usr/bin/env python from fabric ...
- centos MAC 地址与报错eth0 unknown interface no such device
eth0 unknown interface no such device 出现这个原因是由于虚拟机直接COPY过来,MAC地址发生了变化,但eth0 里仍然记录着旧的MAC地址. 解决方法: vim ...