poj3696 欧拉函数引用
不知道错在哪里,永远T
/*
引理:a,n互质,则满足a^x=1(mod n)的最小正整数x0是φ(n)的约数
思路:求出d=gcd(L,8)
求出φ(9L/d)的约数集合,再枚举约数x,是否满足10^x = 1 (mod 9L/d)
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define ll long long ll l,d,phi,m,factor[];
ll v[],prime[],mm;
void init(ll n){
memset(v,,sizeof v);
memset(prime, ,sizeof prime);
mm=;
for(int i=;i<=n;i++){
if(v[i]==){
v[i]=i;
prime[++mm]=i;
}
for(int j=;j<=m;j++){
if(prime[j]>v[i] || prime[j]*i>n) break;
v[i*prime[j]]=prime[j];
}
}
} ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll f(ll n){
ll res=n;//和1互质
for(int i=;i<=mm;i++){
if(prime[i]>n) break;
if(n%prime[i]==) res=res/prime[i]*(prime[i]-);
while(n%prime[i]==)
n/=prime[i];
}
if(n>) res=res/n*(n-);
return res;
}
ll mul(ll a,ll b,ll m)
{
ll res=;
while(b)
{
if(b&) res+=a;
if(res>m) res-=m;
a+=a;
if(a>m)
a-=m;
b>>=;
}
return res;
}
ll pow(ll a,ll b,ll m)
{
ll res=;
while(b)
{
if(b&) res=mul(res,a,m);
a=mul(a,a,m);
b>>=;
}
return res;
} int main(){
int tt=;
init(sqrt());
while(scanf("%lld",&l),l){
d=gcd(l,);
phi=f(*l/d);
if(gcd(,*l/d)!=) {
printf("Case %d: 0\n",++tt);
continue;
}
m=;
for(int i=;i*i<=phi;i++)
if(phi%i==){
factor[++m]=i;
if(i!=phi/i) factor[++m]=phi/i;
} //从小到大枚举每个约数
ll mod=*l/d,flag=;
sort(factor+,factor++m);
for(int i=;i<=m;i++){
if(pow(,factor[i],mod)%mod==){
flag=;
printf("Case %d: %lld\n",++tt,factor[i]);
break;
}
}
if(flag==) printf("Case %d: 0\n",++tt);
}
return ;
}
poj3696 欧拉函数引用的更多相关文章
- poj3696 快速幂的优化+欧拉函数+gcd的优化+互质
这题满满的黑科技orz 题意:给出L,要求求出最小的全部由8组成的数(eg: 8,88,888,8888,88888,.......),且这个数是L的倍数 sol:全部由8组成的数可以这样表示:((1 ...
- 「POJ3696」The Luckiest number【数论,欧拉函数】
# 题解 一道数论欧拉函数和欧拉定理的入门好题. 虽然我提交的时候POJ炸掉了,但是在hdu里面A掉了,应该是一样的吧. 首先我们需要求的这个数一定可以表示成\(\frac{(10^x-1)}{9}\ ...
- 【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论
http://poj.org/problem?id=2478 题意:给定一个数x,求<=x的数的欧拉函数值的和.(x<=10^6) 题解:数据范围比较大,像poj1248一样的做法是不可行 ...
- 51nod1040 最大公约数之和,欧拉函数或积性函数
1040 最大公约数之和 给出一个n,求1-n这n个数,同n的最大公约数的和.比如:n = 6时,1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15 看起来很简单 ...
- HYSBZ - 3813 奇数国 欧拉函数+树状数组(线段树)
HYSBZ - 3813奇数国 中文题,巨苟题,巨无敌苟!!首先是关于不相冲数,也就是互质数的处理,欧拉函数是可以求出互质数,但是这里的product非常大,最小都2100000,这是不可能实现的.所 ...
- hdu2588 GCD (欧拉函数)
GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数. (文末有题) 知 ...
- BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2553 Solved: 1565[Submit][ ...
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- COGS2531. [HZOI 2016]函数的美 打表+欧拉函数
题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...
随机推荐
- java和javaScript创建方式
Java创建对象的几种方式:http://blog.csdn.net/u013230804/article/details/25828339 javascript三种创建对象的方式:https://w ...
- set_index() pandas
set_index DataFrame可以通过set_index方法,可以设置单索引和复合索引. DataFrame.set_index(keys, drop=True, append=False, ...
- 编写前程贷投标loadrunner脚本及总结
1.完成前程贷的(登录,投标) 2.所有的返回信息都用关联函数(web_reg_save_param_ex)进行关联 3.对返回信息用(strcmp)函数进行if判断 4.总结(web_reg_sav ...
- nGrinder TestGroovy.groovy
s /** * */ package com.iteye.lindows.mysql /** * @author Lindows * */ class TestGroovy { static main ...
- 函数和常用模块【day04】:高阶函数(七)
本节内容 1.介绍 2.具体实用 3.eval()函数 一.介绍 高阶函数:变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数. 二.具体实用 其实说白了,高阶函数功能就 ...
- #define宏定义中## #@ # \ 符号使用
C/C++ 宏命令的神奇用法. 先看下面三条语句: #define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) ...
- KDevelop使用经验
KDevelop中不显示行号: 1.上方菜单栏"编辑器"->查看->Show Line Numbers 2.设置->配置编辑器->Appearance-&g ...
- ECSHOP /api/client/includes/lib_api.php
ecshop /api/client/api.php./api/client/includes/lib_api.php ECShop存在一个盲注漏洞,问题存在于/api/client/api.php文 ...
- EasyUI动态修改easyui-textbox验证信息
<tr> <td>编码:</td> <td><input type="text" id="code" na ...
- C# 批量修改文件名
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...