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}\ ...
随机推荐
- OIer应该知道的二进制知识
计算机使用\(2\)进制,这是众所周知的.在学习\(OI\)的过程中,\(2\)进制也显得尤为重要.有时候,细节决定成败,所以我想总结一下容易被遗忘和误解的关于\(2\)进制的知识. 1.运算符 &a ...
- MAXOS安装FFMPEG
安装brew 安装方法:命令行输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/ins ...
- elasticsearch2.x插件之一:marvel(简介)
在 安装插件的过程中,尤其是安装Marvel插件遇到了很多问题,又要下载license.Marvel-agent,又要下载安装Kibana,很多内容 不知道为何这样安装处理.仔细看了看ElasticS ...
- windows、Linux 开放端口
一.Linux开放端口: 1. CentOS7.x/RedHat7.x , 参考 CentOS7使用firewalld打开关闭防火墙与端口 1.firewalld的基本使用 启动: systemct ...
- JAVA之J2EE学习路线
摘自:http://blog.csdn.net/hsc456/article/details/51970559 历经2,3个月,终于学完了J2EE的方方面面,虽然还是一知半解,好歹也算是整条路都走 ...
- 怀旧系列(1)----FBasic
小时候,老爸斥巨资给我买了一台小霸王学习机.玩遍了所有游戏后,里面有个F-Basic语言,黑乎乎的,一点也不好玩.直到杰兄从学校带回一本BASIC语言,才知道这玩意儿还可以编辑**图案.由于没有人指导 ...
- 17. PHP+Mysql注入防护与绕过
黑名单关键字过滤与绕过 过滤关键字and.or PHP匹配函数代码如下: preg_match('/(and|or)/i', $id) 如何Bypass,过滤注入测试语句: 1 or 1 = 1 ...
- linux 的有用的网站
从windows下移到linux下还有很长的路走阿,慢慢记录一些有用的网站吧 http://www.yolinux.com/ http://linux.die.net/
- POJ 2398 Toy Storage (叉积判断点和线段的关系)
题目链接 Toy Storage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4104 Accepted: 2433 ...
- App集成极光推送开发流程[关键步骤]
1.客户端集成SDK 1.1初始化 JPushInterface.setDebugMode(true); // 设置开启日志,发布时请关闭日志 JPushInterface.init(this); / ...