python画龙舟_BZOJ4891 TJOI2017龙舟(Polllard-Rho)

对给定模数分解质因数后约分即可。依然常数巨大过不了。

#include

#include

#include

#include

#include

#include

using namespace std;

#define ll long long

#define N 10010

char getc(){char c=getchar();while ((c'Z')&&(c'z')&&(c'')) c=getchar();return c;}

ll gcd(ll n,ll m){return m==?n:gcd(m,n%m);}

ll read()

{

ll x=,f=;char c=getchar();

while (c'') {if (c=='-') f=-;c=getchar();}

while (c>=''&&c<='') x=(x<

return x*f;

}

int n,m,q,cnt,p[],prime[],tot[],t;

ll g[],a[][N],b[N],c[N],d[N];

bool flag[];

ll ksc(ll a,ll b,ll p)

{

ll t=a*b-(ll)((long double)a*b/p+0.5)*p;

return t

}

ll ksm(ll a,ll k,ll p)

{

ll s=;

for (;k;k>>=,a=ksc(a,a,p)) if (k&) s=ksc(s,a,p);

return s;

}

void exgcd(ll &x,ll &y,ll a,ll b)

{

if (b==)

{

x=,y=;

return;

}

exgcd(x,y,b,a%b);

ll t=x;x=y;y=t-a/b*x;

}

ll inv(ll a,ll p)

{

ll x,y;exgcd(x,y,a,p);

x=(x%p+p)%p;

return x;

}

bool check(int k,ll n)

{

if (ksm(k,n-,n)!=) return ;

ll p=n-;

while (!(p&))

{

p>>=;ll x=ksm(k,p,n);

if (x==n-) return ;

if (x!=) return ;

}

return ;

}

bool Miller_Rabin(ll n)

{

if (n<=) return !flag[n];

return check(,n)&&check(,n)&&check(,n)&&check(,n)&&check(,n)&&check(,n);

}

ll f(ll x,ll p,int c){return (ksc(x,x,p)+c)%p;}

void getfactor(ll n)

{

if (n<=)

{

while (n>) g[++cnt]=p[n],n/=p[n];

return;

}

if (Miller_Rabin(n)) {g[++cnt]=n;return;}

while ()

{

int c=rand()%(n-)+;

ll x=rand()%n,y=x;

do

{

ll z=gcd(abs(x-y),n);

if (z>&&z

x=f(x,n,c),y=f(f(y,n,c),n,c);

}while (x!=y);

}

}

int main()

{

#ifndef ONLINE_JUDGE

freopen("bzoj4891.in","r",stdin);

freopen("bzoj4891.out","w",stdout);

const char LL[]="%I64d\n";

#else

const char LL[]="%lld\n";

#endif

n=read(),m=read(),q=read();

flag[]=;

for (int i=;i<=;i++)

{

if (!flag[i]) prime[++t]=i,p[i]=i;

for (int j=;j<=t&&prime[j]*i<=;j++)

{

flag[prime[j]*i]=;

p[prime[j]*i]=prime[j];

if (i%prime[j]==) break;

}

}

for (int i=;i<=m;i++) b[i]=read();

for (int i=;i<=n;i++)

for (int j=;j<=m;j++)

a[i][j]=read();

while (q--)

{

int x=read();ll y=read(),ans=;cnt=;getfactor(y);

sort(g+,g+cnt+);cnt=unique(g+,g+cnt+)-g-;memset(tot,,sizeof(tot));

memcpy(c,b,sizeof(c));memcpy(d,a[x],sizeof(d));

for (int i=;i<=m;i++)

{

for (int j=;j<=cnt;j++)

while (c[i]%g[j]==) tot[j]++,c[i]/=g[j];

for (int j=;j<=cnt;j++)

while (d[i]%g[j]==) tot[j]--,d[i]/=g[j];

ans=ksc(ksc(ans,c[i],y),inv(d[i],y),y);

}

for (int i=;i<=cnt;i++)

if (tot[i]

else ans=ksc(ans,ksm(g[i],tot[i],y),y);

cout<

}

return ;

}

BZOJ4891:[TJOI2017]龙舟(Pollard-Rho,exgcd)

Description 加里敦大学有一个龙舟队,龙舟队有n支队伍,每只队伍有m个划手,龙舟比赛是一个集体项目,和每个人的能力息息相关,但由于龙舟讲究配合,所以评价队伍的能力的是一个值c = (b1*b ...

bzoj4891: [Tjoi2017]龙舟

求$\frac{b_1b_2b_3...b_m}{a_1a_2a_3...a_m}\%M$ M<=1e18,m<=100000,数据组数<=50 用pollard-rho分解M的质因 ...

【BZOJ4891】[TJOI2017]龙舟(Pollard_rho)

[BZOJ4891][TJOI2017]龙舟(Pollard_rho) 题面 BZOJ 洛谷 题解 看了半天题....就是让你求\(\frac{b}{a}\)在模\(M\)意义下的值... 首先把\( ...

POJ 1811 Prime Test (Pollard rho 大整数分解)

题意:给出一个N,若N为素数,输出Prime.若为合数,输出最小的素因子.思路:Pollard rho大整数分解,模板题 #include #include < ...

POJ2429 - GCD &; LCM Inverse(Miller&ndash;Rabin+Pollard's rho)

题目大意 给定两个数a,b的GCD和LCM,要求你求出a+b最小的a,b 题解 GCD(a,b)=G GCD(a/G,b/G)=1 LCM(a/G,b/G)=a/G*b/G=a*b/G^2=L/G 这 ...

POJ1811- Prime Test(Miller&ndash;Rabin+Pollard's rho)

题目大意 给你一个非常大的整数,判断它是不是素数,如果不是则输出它的最小的因子 题解 看了一整天相关部分,终于把Miller–Rabin和Pollard's rho这两 ...

poj 1811 Pallor Rho +Miller Rabin

/* 题目:给出一个数 如果是prime 输出prime 否则输出他的最小质因子 Miller Rabin +Poller Rho 大素数判定+大数找质因子 后面这个算法嘛 基于Birthday Pa ...

Miller_Rabin素数判断,rho

safe保险一点5吧.我是MR: ; int gcd(int a,int b){return !b?a:gcd(b,a%b);} int mul(int a,int b,int p){ )*p); ? ...

质因数分解的rho以及miller-rabin

一.前言 质因数分解,是一个在算法竞赛里老生常谈的经典问题.我们在解决许多问题的时候需要用到质因数分解来辅助运算,而且质因数分解牵扯到许许多多经典高效的算法,例如miller-rabin判断素数算法, ...

随机推荐

SDWebImage源码解读 之 UIImage+GIF

第二篇 前言 本篇是和GIF相关的一个UIImage的分类.主要提供了三个方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name ----- 根据名 ...

在OSX和Windows版本Docker上运行GUI程序

看到很多人在Docker问题区讨论:如何在OS X和Windows的Docker上运行GUI程序, 随手记录几个参考资料: https://github.com/docker/docker/issue ...

OptionsMenu

菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu),今天这讲是O ...

iframe自适应宽度

Redis和Memcache的区别分析

1. Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别. 2. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构 ...

关于JPA封装数据库数据到实体不调用属性的get和set的方法解决办法

今天发现JPA封装数据库数据到实体并不调用属性的get和set的,郁闷,本来想在set方法做改字段的值处理的谁知道遇到这个情况: @Column(name = acode) @Access(value ...

easyui返回数据类型

/** * 我申请的事项List * * @param personalParamVo * @param pagePara * @return */ @ResourceMapping("my ...

XStream 用法汇总

XStream是一家Java对象和XML转换工具,很好很强大.它提供了所有的基本型.排列.收集和其他类型的支持,直接转换.因此XML在数据交换经常使用.对象序列化(和Java对象的序列 ...

Unit of work + Repository

(Unit of work + Repository) 今日后开启进阶模式! 谈到MVC与EntityFramework,则不得不说一说事务与仓储(Unit of work + Repository) ...

CSS盒模型和margin重叠

在 CSS 中,width 和 height 指的是内容区域的宽度和高度.增加内边距.边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸.(div的实际占用尺寸变打了) 但: 一旦为页面设置 ...

你可能感兴趣的:(python画龙舟)