首页 > 其他分享 >[SDOI]2011计算器

[SDOI]2011计算器

时间:2024-10-24 15:34:24浏览次数:1  
标签:return SDOI int ans exgcd 计算器 define 2011 mod

\(非常简单的一道板子训练题\)
\(对于问题一:直接使用快速幂解决\)
\(对于问题二:使用exgcd解决\)
\(对于问题三:使用bsgs解决\)
\(code:\)

点击查看代码
#include<bits/stdc++.h>

#define int long long
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define pii pair<int,int>
using namespace std;
//const int mod=998244353;
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; };

int qpw(int a, int b, int mod) {
    int ans = 1;
    while (b) {
        if (b & 1)ans = ans * a % mod;
        a = a * a % mod, b >>= 1;
    }
    return ans;
}

int inv(int x, int mod) { return qpw(x, mod - 2, mod); }
int exgcd(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1, y = 0;
        return a;
    }
    int d = exgcd(b, a % b, y, x);
    y -= a / b * x;
    return d;
}
int bsgs(int a,int b,int mod){
    a%=mod,b%=mod;
    if(b==1)return 0;
    if(a==0&&b==0)return 1;
    if(a==0&&b!=0)return -1;
    unordered_map<int,int>mp;
    int m=ceil(sqrt(mod)),t=b;
    mp[b]=0;
    for(int j=1;j<m;j++){
        t=t*a%mod;
        mp[t]=j;
    }
    int mi=1;
    for(int i=1;i<=m;i++){
        mi=mi*a%mod;
    }
    t=1;
    for(int i=1;i<=m;i++){
        t=t*mi%mod;
        if(mp.count(t)){
            return i*m-mp[t];
        }
    }
    return -1;
}
int op;
void solve() {
    int y,z,p;
    cin>>y>>z>>p;
    if(op==1){
        cout<<qpw(y,z,p)<<'\n';
    }else if(op==2){
        int gc=gcd(y,p);
        if(z%gc){
            cout<<"Orz, I cannot find x!"<<'\n';
        }else {
            int X,Y;
            exgcd(y,p,X,Y);
            X=(X*z%p+p)%p;
            cout<<X<<'\n';
        }
    }else {
        int x=bsgs(y,z,p);
        if(x==-1){
            cout<<"Orz, I cannot find x!"<<'\n';
        }else cout<<(x%p+p)%p<<'\n';
    }
}

signed main() {
    ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
    int _ = 1;
    cin >> _;cin>>op;
    while (_--)solve();
}

标签:return,SDOI,int,ans,exgcd,计算器,define,2011,mod
From: https://www.cnblogs.com/archer233/p/18499676

相关文章

  • 就是这个样的粗爆,手搓一个计算器:排卵计算器
        作为程序员,没有合适的工具,就得手搓一个,PC端,移动端均可适用。废话不多说,直接上代码。HTML:<divclass="container"><divclass="calculator"><labelfor="last-period">上次月经开始日期:</label><inputid="last-period"type="d......
  • [SDOI2013] 随机数生成器
    BSGS对于高阶同余方程的求解通过题目给出的式子\(x_{2}\equiva*x_{1}\modp\)\(x_{2}+\frac{b}{a}\equiva*x_{1}+\frac{b}{a}\modp\)\(x_{3}=a*x_{2}+b\equiv(a^2)*x_{1}+a*b+b]\modp\)\(对该式子进行继续推导可以得出\)\(x_{i}=a^{i-1}*x1+\sum_{j=0}^{i-2}a^{j}......
  • 程序设计实践 计算器
    这段代码实现了一个综合计算器应用程序,它使用Python的Tkinter库创建了一个图形用户界面(GUI)。该计算器包含两个主要功能:普通计算器和贷款计算器。下面是对代码的详细解释:1.导入模块importtkinterastkfromtkinterimportmessageboxfrommathimportsqrttkinter:用于创......
  • 讲解LeetCode第227题:基本计算器||(完整代码)
    LeetCode第227题:基本计算器||题目介绍方法一:数组模拟栈完整代码展示核心原理演示代码片段解释片段一:片段二:片段三:片段四:片段五:......
  • P2487 [SDOI2011] 拦截导弹
    Sol两个限制的导弹拦截。设\(f_i\)表示以\(i\)结尾的最长LIS显然可以得到暴力转移方程\(f_i=\displaystyle\max_{j=1,a_j\gea_i,b_j\geb_i}^{i-1}f_j+1\),考虑到是三维偏序,所以用CDQ分治优化即可。离散化不要忘记排序!Code#include<iostream>#include<iomanip>......
  • 【Spring】Spring实现加法计算器和用户登录
    加法计算器准备工作创建SpringBoot项目:引入SpringWeb依赖,把前端的页面放入项目中**<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,init......
  • [题解]P1311 [NOIP2011 提高组] 选择客栈
    P1311[NOIP2011提高组]选择客栈P6032选择客栈加强版只要\([l,r]\)区间之内存在一个\(i\)使得\(w[i]\lep\),这个区间就是符合条件的。所以我们遍历每一个元素\(i\),根据贪心的思想我们维护\([1,i]\)区间内满足\(w[i]\lep\)的最大\(i\),记为\(mp\)。对于每个元素\(i\),寻找\(......
  • P1307 [NOIP2011 普及组] 数字反转
    P1307[NOIP2011普及组]数字反转提交483.96k通过196.21k时间限制1.00s内存限制128.00MB提交答案加入题单做题计划(首页)个人题单团队题单保存题目提供者CCF_NOI难度入门历史分数0 提交记录  查看题解标签NOIp普及组2011 查看算法标签进入讨论版相关讨论......
  • P2480 [SDOI2010] 古代猪文
    简单数学题。显然答案是\(g^{\sum_{d|n}C_n^d}\)。考虑到\(mod\)是质数,所以\(g^{mod-1}\equiv1\pmod{mod}\),那么考虑算出指数模上\(mod-1\)。注意到\(mod-1\)并不是质数,显然可以质因数分解后CRT合并。于是就做完了。Code#include<iostream>#include<ioman......
  • java实现简易计算器
    写一个计算器,实现简单的加减乘除,要求有用户交互。思路:四个方法利用循环,switch输出importjava.util.Scanner;publicclassJiSuanQi{//定义加法、减法、乘法、除法方法publicstaticdoubleadd(doublea,doubleb){returna+b;}publicstaticd......