昨天终于把欧拉定理的证明看明白了。。。于是兴冲冲地写了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 欧拉定理的更多相关文章

  1. POJ3696 The Luckiest number

    题意 Language:Default The Luckiest number Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7 ...

  2. POJ3696:The Luckiest number(欧拉函数||求某数最小的满足题意的因子)

    Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his own ...

  3. [POJ3696]The Luckiest number(数论)

    题目:http://poj.org/problem?id=3696 题意:给你一个数字L,你要求出一个数N,使得N是L的倍数,且N的每位数都必须是8,输出N的位数(如果不存在输出0) 分析: 首先我们 ...

  4. POJ_3696 The Luckiest number 【欧拉定理+同余式+对取模的理解】

    一.题目 Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his ...

  5. poj 3696 The Luckiest Number

    The Luckiest Number 题目大意:给你一个int范围内的正整数n,求这样的最小的x,使得:连续的x个8可以被n整除. 注释:如果无解输出0.poj多组数据,第i组数据前面加上Case ...

  6. poj_3696_The Luckiest number

    Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his own ...

  7. HDU 2462 The Luckiest number

    The Luckiest number Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Ori ...

  8. The Luckiest number(hdu2462)

    The Luckiest number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  9. 「POJ3696」The Luckiest number【数论,欧拉函数】

    # 题解 一道数论欧拉函数和欧拉定理的入门好题. 虽然我提交的时候POJ炸掉了,但是在hdu里面A掉了,应该是一样的吧. 首先我们需要求的这个数一定可以表示成\(\frac{(10^x-1)}{9}\ ...

随机推荐

  1. QT之在QML中使用C++类和对象

    QML其实是对ECMAScript的扩展,融合了Qt object系统,它是一种新的解释性语言,QML引擎虽然由Qt C++实现,但QML对象的运行环境说到底和C++对象的上下文环境是不通的,是平行的 ...

  2. CH6802 車的放置 和 CH6B24 Place the Robots

    6802 車的放置 0x60「图论」例题 描述 给定一个N行M列的棋盘,已知某些格子禁止放置.问棋盘上最多能放多少个不能互相攻击的車.車放在格子里,攻击范围与中国象棋的"車"一致. ...

  3. ACM学习历程—HDU 5459 Jesus Is Here(递推)(2015沈阳网赛1010题)

    Sample Input 9 5 6 7 8 113 1205 199312 199401 201314 Sample Output Case #1: 5 Case #2: 16 Case #3: 8 ...

  4. 浏览器全屏的JS代码实现

    方法一:该方法是从一个网上的效果看到不错,然后自己就拿来下来实验了一下,还是比较满意度,下面直接给出代码 <!DOCTYPE HTML> <html lang="en-US ...

  5. rsync 介绍和参数说明

    Rsync 介绍: 我们经常需要在不同目录或者服务器之间做文件同步和更新,Linux提供了很多内置命令可以使用比如scp等等,但是今天我们介绍一个更加强大的工具rsync.rsync 命令是一个远程同 ...

  6. AI设计的若干规则阐述

    转自:http://www.gameres.com/491742.html 一般来讲,网络游戏的AI历来就是很简单的AI.相比之下,很多单机游戏的AI就要得复杂一些.而笔者并未从事过大型单机游戏的AI ...

  7. Linker Tools Error LNK2001

    https://msdn.microsoft.com/en-us/library/f6xx1b1z.aspx https://www.cnblogs.com/runningRain/p/5674833 ...

  8. inner join ,left join ,right join区别

    inner join ,left join ,right join区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中 ...

  9. 03_android日志猫的使用

    在java基础的时候如果想调试程序打一下日志,用的是System.out.println();. 控制台输出的其实不是咱们的日志,而是我把整个项目的部署到设备上.控制台输出的是这个东西.Uploadi ...

  10. Maven的pom实例

    该pom中包含了一些我认为会需要的东西,并且加了注释.可以根据需求适当删减. 包含了spring-mvc , junit,hibernate验证,json,apache-commons组件 还有 co ...