【bzoj2242】[SDOI2011]计算器 数论相关(快速幂+扩展欧几里得+BSGS)

告别合成噪声:用AP-BSN自监督搞定真实照片去噪(附PyTorch代码) 本文详细解析了AP-BSN自监督去噪算法在真实图像处理中的应用,通过非对称像素下采样和盲点网络的创新结合,有效解决传统方法需要干净样本的难题。附PyTorch代码实现,帮助开发者快速掌握这一先进技术,适用于手机摄影、老照片修复等场景。 阅读详情

2242: [SDOI2011]计算器
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 2529 Solved: 1003
[Submit][Status][Discuss]
Description
你被要求设计一个计算器完成以下三项任务:
1、给定y,z,p,计算Y^Z Mod P 的值;
2、给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数;
3、给定y,z,p,计算满足Y^x ≡ Z ( mod P)的最小非负整数。
Input

输入包含多组数据。
第一行包含两个正整数T,K分别表示数据组数和询问类型(对于一个测试点内的所有数据,询问类型相同)。
以下行每行包含三个正整数y,z,p,描述一个询问。
Output
对于每个询问,输出一行答案。对于询问类型2和3,如果不存在满足条件的,则输出“Orz, I cannot find x!”,注意逗号与“I”之间有一个空格。

题目链接:

题意:中文题。。。
1.快速幂

while(T--)
    {
        scanf("%lld%lld%lld",&aa,&bb,&p);
        long long ans=1;
        while(bb>0)
        {
            if(bb&1) ans=ans*aa%p;
            aa=aa*aa%p;
            bb>>=1;
        }
        printf("%lld\n",ans);

    }

2.扩展欧几里德解线性同余方程 ax=b(mod n)

while(T--)
    {
        long long x,y;
        long long d;
        scanf("%lld%lld%lld",&aa,&bb,&p);
        ex_gcd(aa,p,d,x,y);
        if(bb%d!=0)
        {
            printf("Orz, I cannot find x!\n");
            continue;
        }
            x=x*(bb/d)%p;
                x=(x%(p/d)+p/d)%(p/d);
        printf("%lld\n",x);
    }

3.高次同余方程a^x=b(mod n),Baby Step Giant Step算法::

while(T--)
    {
        flag=0;
        long long x,y;
        long long d;
        scanf("%lld%lld%lld",&aa,&bb,&p);

        aa%=p;
        if(!aa&&!bb)    
        {
            printf("1\n");
            continue;
        }
        if(!aa)
        {
            printf("Orz, I cannot find x!\n");
            continue;
        }
        mp.clear();
        long long m=ceil(sqrt(p)),t=1;
        mp[1]=m+1;
        for(long long i=1;i<m;i++) 
        {
            t=t*aa%p;
            //cout<<t<<"      "<<i<<endl;
            if(!mp[t]) mp[t]=i;
            //cout<<"   "<<mp[1]<<endl;
        }
        //cout<<"SB"<<endl;
        long long tmp=cheng(aa,p-m-1,p),ine=1;
        //cout<<" "<<tmp<<endl;
        //cout<<"SB"<<endl;
        for(long long k=0;k<m;k++)
        {
            //cout<<bb<<"   "<<ine<<endl;
            int i=mp[bb*ine%p];
            //cout<<k<<"   "<<i<<endl;
            if(i)
            {   
                flag=1;     
                if(i==m+1) i=0;
                printf("%lld\n",k*m+i);
                break;
            }
            ine=ine*tmp%p;
        }
        if(!flag)
        printf("Orz, I cannot find x!\n");
    }       
}

思路:
———–三个模版…………..
说一下a^x=b(mod n)的Baby Step Giant Step算法(一点分块的思想)

m取sqrt(p);
求y^x=z(mod p)设x=km+i
y^km∗y^i≡z
yi≡z∗ine(y^km)(逆元)
用费马小定理
{
y^(p-1)mod p=1;
y^m * y^(p-m-1) mod p =1;
y^m的逆元为y^(p-m-1)
}
ine(y^m)≡y^(p−1−m)
设其为T
ine(y^km)≡ine(y^(k−1)m)∗T
把y^i(0<=i<=m)放入map;
然后枚举k,查询
z∗ine(y^km)

代码:

#include<iostream>
#include<stdio.h>
#include<cmath>
#include<string.h>
#include<map>
using namespace std;
int T,k;
int flag=0;
long long  aa,bb,p;
map<int,int> mp;
void solve1()
{
    while(T--)
    {
        scanf("%lld%lld%lld",&aa,&bb,&p);
        long long ans=1;
        while(bb>0)
        {
            if(bb&1) ans=ans*aa%p;
            aa=aa*aa%p;
            bb>>=1;
        }
        printf("%lld\n",ans);

    }

}
void ex_gcd(long long a,long long b,long long &d,long long &x,long long &y)
{
    if(b==0)
    {
        x=1,y=0;
        d=a;        
        return ;
    }
    ex_gcd(b,a%b,d,x,y);
    long long  x0=x;
    x=y;
    y=x0-(a/b)*y;

}
void solve2()
{
    while(T--)
    {
        long long x,y;
        long long d;
        scanf("%lld%lld%lld",&aa,&bb,&p);
        ex_gcd(aa,p,d,x,y);
        if(bb%d!=0)
        {
            printf("Orz, I cannot find x!\n");
            continue;
        }
            x=x*(bb/d)%p;
                x=(x%(p/d)+p/d)%(p/d);
        printf("%lld\n",x);
    }

}
long long cheng(long long a,long long b,long long p)
{
    long long ans=1;
    while(b>0)
    {
        if(b&1) ans=ans*a%p;
        a=a*a%p;
        b>>=1;
    }
    return ans;
}
void solve3()
{
    while(T--)
    {
        flag=0;
        long long x,y;
        long long d;
        scanf("%lld%lld%lld",&aa,&bb,&p);

        aa%=p;
        if(!aa&&!bb)    
        {
            printf("1\n");
            continue;
        }
        if(!aa)
        {
            printf("Orz, I cannot find x!\n");
            continue;
        }
        mp.clear();
        long long m=ceil(sqrt(p)),t=1;
        mp[1]=m+1;
        for(long long i=1;i<m;i++) 
        {
            t=t*aa%p;
            //cout<<t<<"      "<<i<<endl;
            if(!mp[t]) mp[t]=i;
            //cout<<"   "<<mp[1]<<endl;
        }
        //cout<<"SB"<<endl;
        long long tmp=cheng(aa,p-m-1,p),ine=1;
        //cout<<" "<<tmp<<endl;
        //cout<<"SB"<<endl;
        for(long long k=0;k<m;k++)
        {
            //cout<<bb<<"   "<<ine<<endl;
            int i=mp[bb*ine%p];
            //cout<<k<<"   "<<i<<endl;
            if(i)
            {   
                flag=1;     
                if(i==m+1) i=0;
                printf("%lld\n",k*m+i);
                break;
            }
            ine=ine*tmp%p;
        }
        if(!flag)
        printf("Orz, I cannot find x!\n");
    }       
}
int main()
{

    scanf("%d%d",&T,&k);
    if(k==1) solve1();
    if(k==2) solve2();
    if(k==3) solve3();
}
模电实验室:手把手教你调试共射放大电路静态工作点(避免波形失真) 本文详细介绍了共射放大电路静态工作点的调试方法,帮助避免波形失真问题。从实验准备、电路搭建到静态工作点测量,提供了实用的电阻选值策略和常见波形失真解决方案,适合电子相关专业学生和硬件工程师参考学习。 阅读详情

相关推荐

libcurl库使用详情、libcurl库的制作

​ libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。libcurl的官网 、库下载。这种库使用的时候就像使用wiringPi库一样,编写完代码需要链接这个库,所以要先下载这个库。libcurl的使用(其实和socket编程时一样,都需要一定的步骤):

qq_45698138的博客 5337

[数论]计算器

题目 解题思路 分三个部分,考验算法了。 1. 第一个操作很简单,就是一个快速幂,这里有人可能会问可不可以用降幂公式。所谓降幂公式,其实就这样。 我们看一下数据范围,发现m确实可能是非常大的,又是一个质数,因而的值就是m-1,细细看一下,发现可能得不偿失,还不如不用得了。因而直接用快速幂。 2. 第二个操作就是解一个二元一次不定方程,我们姑且用表示一下。算法用exgcd即可,以前...

ywy 512

岭回归的MATLAB步骤

MATLAB 实现框架,它涵盖了从数据导入到岭回归的步骤,包括计算共线性、使用 MAE、MSE、R²、MAPE 进行评价,以及绘制相应的可视化图表。

subject625Ruben的博客 1089

数论的一个基础计算器,集成了同余式,逐次平方法,勒让德计算,模M的K次密等内容

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_46624645的博客 395

瑞芯微RK3588开发板VSCode远程开发全攻略:从SSH配置到插件优化

本文详细介绍了如何在瑞芯微RK3588开发板上配置VSCode远程开发环境。从Ubuntu系统下的SSH服务设置、VSCode Remote-SSH扩展安装,到连接建立、基础工具链部署,再到针对ARM平台的性能优化与调试配置,提供了一套完整的实战指南,帮助开发者高效利用本地资源进行嵌入式开发。

weixin_28831341的博客 621

powerdesigner导出sql将name放到comment注释上

【代码】powerdesigner导出sql将name放到comment注释上。

weixin_45947759的博客 1352

[SDOI2011]计算器(逆元/BSGS)

题目链接 一个很简单的题,套一下就好了。操作2的解利用exgcd形式可以得到当z与gcd(y,p)不整除时无解。否则解就是y的逆元的倍数emmmm #include<bits/stdc++.h> #include <map> #include <cmath> #include <cstdio> #include <iostream> #include <unordered_map> #define ll long long usi

weixin_45948940的博客 1351

华北理工大学以升实验班蓝桥杯选拔赛题解

文章目录华北理工大学以升实验班蓝桥杯选拔赛题解A:期末考试题目描述题目讲解代码B:月份题目描述题目讲解代码C:打饭题目描述题目讲解代码D : 正弦波信号题目描述题目讲解代码E : 亲爱的长方形题目描述题目讲解代码F:挖金子题目描述题目讲解代码G : 金金的游戏题目描述题目讲解代码H : 区间和题目描述题目讲解代码详细视频讲解请关注华北理工大学b站账号。 华北理工大学以升实验班蓝桥杯选拔赛题解 A:期末考试 题目描述 Description 期末考试过去许多天了,如今成绩都出来了,那么现在让我们对成绩我分个类

Qq1739206233的博客 1127

BZOJ2242 [SDOI2011]计算器(洛谷P2485)

费马小定理 BSGS BZOJ题目传送门 洛谷题目传送门 第一问快速幂 第二问移个项,得x=z∗inv(y)(modp)x=z∗inv(y)(modp)x=z*inv(y) (\mod p)。因为ppp为质数,由费马小定理,inv(y)=yp−2(modp)inv(y)=yp−2(modp)inv(y)=y^{p-2}(\mod p),快速幂求解。 第三问裸的BSGS 代码: #in...

forezxl的博客 280

程序员应用AI大模型创业实现财务自由的100种赚钱方案原理与实战指南

成功的 AI 创业者都遵循着 “技术 + 需求 + 变现” 的铁三角法则。记住:不是要做 “全能大模型”,而是成为某个垂直领域的 “AI 解决方案专家”。现在就开始行动:用周末 2 小时完成第一个 MVP,下周启动种子用户测试,三个月内找到可复制的盈利模式。当你实现第一个 10 万用户时,会发现财务自由的密码藏在持续迭代的每个 0.1 版本更新中。延伸思考:你的技术背景适合切入哪个细分领域?

AI天才研究院 1378

【新版系统架构】系统架构设计师教程全篇知识点提炼

信息系统的5个基本功能:输入、存储、处理、输出和控制信息系统的发展:诺兰模型:初始阶段、传播阶段、控制阶段、集成阶段、数据管理阶段、成熟阶段信息系统的分类:传统的信息系统分为:业务(数据)处理系统、管理信息系统(MIS)、决策支持系统(DSS)、专家系统(ES)、办公自动化系统(OAS)等5类信息系统的生命周期:1、产生阶段2、开发阶段(总体规划、系统分析、系统设计、系统实施、系统验收阶段)3、运行阶段4、消亡阶段信息系统建设原则:1、高层管理人员介入原则。

分享技术干货和灵感、推荐新书和好玩的项目、分享Java面试题 1万+

bzoj 2242(快速幂+扩展欧几里得+BSGS)

传送门 题解:略,几个模板ho在一起就完了。#include<bits/stdc++.h> using namespace std; typedef long long ll; const int mop=1e5+4; inline ll mult(ll x,ll y,ll MOD) { x%=MOD,y%=MOD; return ((x*y-(ll)(((long double)

KGV093的博客 308

AI故障预测系统架构设计:5个核心模块+3种主流架构,收藏这篇就够了

深夜11点,某汽车工厂的生产线突然停机——核心机器人的轴承磨损过度导致卡壳。维修人员连夜抢修,直接损失超过50万元,还延误了客户的交货期。传统的“事后维修”或“定期维护”要么代价高昂,要么防不胜防。AI故障预测系统的出现,让“精准维护”成为可能——它能通过传感器数据提前7-30天预警故障,将停机损失降低80%以上。知道要做故障预测,却不知道怎么搭系统——数据怎么采集?特征怎么提取?模型怎么部署?架构怎么选?本文将解决这些问题:我们会拆解AI故障预测系统的5个核心模块,分析3种主流架构。

AIGC应用创新大全的博客 1019

bzoj2242 : [SDOI2011]计算器 [BSGS算法]

第一次写一个比较高大上的数论题吧~~~虽然要花好长时间才明白一点,但是有收获吧~~对扩展欧几里得加深了理解。还认识了高大上的BSGS算法,哈哈~虽然还是一知半解,脑袋太小理解太慢,不易记住 上别人的题解吧~~~ 相关连接: BSGS算法_Baby steps giant steps算法(无扩展)详解 bzoj2242: [SDOI2011]计算器 && BSGS 算法  

Lin_disguiser的博客 637

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【bzoj2242】[SDOI2011]计算器 快速幂+exgcd+BSGS

Description你被要求设计一个计算器完成以下三项任务: 1、给定y,z,p,计算Y^Z Mod P 的值; 2、给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数; 3、给定y,z,p,计算满足Y^x ≡ Z ( mod P)的最小非负整数。Input输入包含多组数据。第一行包含两个正整数T,K分别表示数据组数和询问类型(对于一个测试点内的所有数据,询问类型相同)。

DQS的树洞 707

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

BZOJ 2242: [SDOI2011]计算器

Description 你被要求设计一个计算器完成以下三项任务: 1、给定y,z,p,计算Y^Z Mod P 的值; 2、给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数; 3、给定y,z,p,计算满足Y^x ≡ Z ( mod P)的最小非负整数。 Input 输入包含多组数据。 第一行包含两个正整数T,K分别表示数据组数和询问类型(对于一个测试点内的所有数据,询问类型相同...

Onebelieve_lxl的博客 178

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

震惊!做了这题就会了快速幂+扩展欧几里德+bsgs(附扩展bsgs)

咳咳,玩了一回标题党哈~ 这神奇的题目就是—— codevs1565/洛谷P2485/bzoj2242【SDOI2011】计算器快速幂这个…..真的需要讲吗?已经在学扩展欧几里德和bsgs的oier应该是早就会快速幂的吧…… 其原理如下。 若y为偶数,则有xy=(xy/2)2x^y=(x^{y/2})^2 若y为奇数,则有xy=(xy/2)2∗xx^y=(x^{y/2})^2*x (y/

litble的成(tui)长(fei)史 1717

2242: [SDOI2011]计算器(数论)

题目大意: 给你三个操作 1:求a^b=x(%p) 2:求a*b=x(%p) 3:求a^x=b(%p) 思路: 这是数论里面比较好的题了,第一问快速幂,第二问扩展gcd,第三问BSGS。 第三问a^x=b(%p),因为过p个肯定有一个循环节,飞马小定理可得,那么我们把x分成根号p块,设为a ^(i*m)a ^j=b(%p),移项可得aj=b∗ine(ai∗m)a^j=b*ine(a^{i*m})a...

学习成神之路 262

【SDOI2011】计算器

Description 给定$y, z, p$,求$x=y^{z} \mod p$或$xy\equiv z \pmod p$或$y^x\equiv z\pmod p$中x的值 Solution 第一个式子我们可以直接用快速幂求解答案。时间复杂度$O(log_{2}z)$ 第二个式子我们可以变形为$xy+Yp=z$,然后用扩展欧几里得算法求出$xy+Yp=gcd(y,p)$的解,然...

weixin_30564901的博客 150

P2485 [SDOI2011]计算器(扩欧&BSGS)

BSGS

Harris-H的博客 435

[BZOJ2242][SDOI2011][BSGS][拓展欧几里得]计算器

题意写一个计算器,能计算AB mod PA^B~mod~P的值,AX≡B(mod P)AX\equiv B(mod~P)的解,和AX≡B(mod P)A^X\equiv B(mod~P)的解数论杂题。 第一问快速幂,第二问exgcd,第三问BSGS.#include <cstdio> #include <map> #include <iostream> #include <algorithm> #

CE玩家 853

【题解】[SDOI2011]计算器

[SDOI2011]计算器 题目描述 你被要求设计一个计算器完成以下三项任务: 给定 y,z,py,z,py,z,p,计算 yz mod py^z \bmod pyzmodp 的值; 给定 y,z,py,z,py,z,p,计算满足 xy≡z(modp)xy \equiv z \pmod pxy≡z(modp) 的最小非负整数 xxx; 给定 y,z,py,z,py,z,p,计算满足 yx≡z(modp)y^x \equiv z \pmod pyx≡z(modp) 的最小非负整数 xxx。 为了拿到奖品,

zswangziye的博客 529

【bzoj2242】[SDOI2011]计算器 快速幂+BSGS

第一问,快速幂 第二问,exgcd或 p是质数,所以y一定有逆元 x=y^(-1)*z 其中y^(-1)=y^(P-2) 因为0没有逆元,所以只有y=0时无解 第三问,BSGS 设x=bk+c 其中k=sqrt(P),b和c都小于sqrt(P) Y^(bk+c)=Z Y^(bk)=Z*Y^(-c) 用map记录一下Z*Y^(-c),一共sqrt(P)个数 枚举b,查询有没有

Oxer的专栏 1333

【SDOI 2011】计算器

算法标签:快速幂+扩欧+BSGS

forever_dreams的博客 281

bzoj2242

快速幂 扩展欧几里得 baby-step-giant-step 可以自行baidu 程序附部分注释 1 const key=1000007; 2 type link=^node; 3 node=record 4 re,wh:longint; 5 next:link; 6 ...

weixin_34413103的博客 162

[SDOI2011] [BZOJ2242] 计算器 - bsgs,快速幂,逆元,map/hash

任务1直接快速幂,时间复杂度 O(q log y)         任务2用exgcd或者快速幂,看看费马小定理就清楚了,快速幂时间复杂度 O(q log P)         任务3比较麻烦。首先我们考虑设x=km+t,其中m为一个自定义的常数(这个好像叫baby steps giant step 也不知道什么鬼名字= =)         然后我们就得到了          根据费马小

whzzt的博客 633
上一篇: 【bzoj2241】[SDOI2011]打地鼠  暴力+乱搞
下一篇: Baby-step giant-step  解高次同余方程a^x=b(mod n) 模版
ALPS233
博客等级 码龄11年 25粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值