题目传送门

-------------------稍加观察就会发现,4- 1就是题目要的答案。至于为什么,看官方的题解。不过这个n非常的大,用正常快速幂解决不了。这道题我学到的就是解决幂非常大的情况。

官方题解传送门

sol1:之前好像做过一道类似的题目,想不出来,在群里看到网友发了一个名词叫十进制快速幂。然后根据这个名字自己意淫通了。一般的快速幂是把幂当成二进制用位运算进行处理。但是字符串不方便进行二进制位运算,不过用同样的方式进行十进制操作就很方便了。如果对二进制快速幂理解够深刻还是很好明白的;

  • 十进制快速幂

    #include "bits/stdc++.h"
    using namespace std;
    const int MAXN = 1e5 + ;
    char s[MAXN]; int p;
    int quick_pow_2(int n, int k) {
    int ans = ;
    while (k) {
    if (k & ) ans = 1LL * ans * n % p;
    n = 1LL * n * n % p;
    k >>= ;
    }
    return ans;
    }
    int quick_pow_10(int n, char* k) {
    int ans = ;
    for (int i = strlen(k) - ; i >= ; i--) {
    ans = 1LL * ans * quick_pow_2(n, k[i] ^ '') % p;
    n = quick_pow_2(n, );
    }
    return ans;
    }
    int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
    scanf("%s%d", s, &p);
    printf("%d\n", (quick_pow_10(, s) + p - ) % p);
    }
    return ;
    }

sol2:解决这样的问题,更主流的方法还是欧拉降幂,我也是刚学的。看官方题解中的代码不是用十进制快速幂做的,于是学习了一下。原先只知道费马小定理,现在感觉费马小定理就是欧拉降幂的一种特殊情况。原理搞不懂,结论就是:a ^ b % c = a ^ (b %  euler(c) + euler(c)) % c。其中euler(c)表示小于c且和c互质的正整数的个数。

  • 欧拉降幂

    #include "bits/stdc++.h"
    using namespace std;
    typedef long long LL;
    const int MAXN = 1e5 + ;
    char s[MAXN]; int p;
    int euler(int n) {
    int ans = n;
    for (int i = ; i * i <= n; i++) {
    if (n % i == ) {
    ans = ans / i * (i - );
    while (n % i == )
    n /= i;
    }
    }
    if (n != ) ans = ans / n * (n - );
    return ans;
    }
    int quick_pow(int n, int k) {
    int ans = ;
    while (k) {
    if (k & ) ans = 1LL * ans * n % p;
    n = 1LL * n * n % p;
    k >>= ;
    }
    return ans;
    }
    int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
    scanf("%s%d", s, &p);
    int m = euler(p); LL k = ;
    bool ok = false;
    for (int i = ; s[i]; i++) {
    k = k * + s[i] - '';
    if (k >= m) {
    ok = true;
    k %= m;
    }
    }
    if (ok) k += m;
    printf("%d\n", (quick_pow(, k) - + p) % p);
    }
    return ;
    }

牛客-小y的盒子的更多相关文章

  1. 牛客 小a与星际探索 bfs

    链接:https://ac.nowcoder.com/acm/contest/317/C?&headNav=acm来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...

  2. 牛客 小a与星际探索

    链接:https://ac.nowcoder.com/acm/contest/317/C来源:牛客网 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从1号星球出发前往n号星球.其中每个星球有一个能量指 ...

  3. 牛客-小a的旅行计划 + 数学推导

    小a的旅行计划 题意: 小a终于放假了,它想在假期中去一些地方游玩,现在有N个景点,编号为,同时小b也想出去游玩.由于一些特殊♂原因,他们的旅行计划必须满足一些条件 首先,他们可以从这N个景点中任意选 ...

  4. 牛客-小w的a=b问题

    题目传送门 sol1:老实做,预处理出所有2到1e5的素数,对所有数进行分解质因数,然后对比因子个数.感觉有点卡常,用了快读然后多次优化之后才过的,map也用上了. 素数筛,快速分解质因数 #incl ...

  5. 牛客-Y 老师的井字窗

    链接:https://ac.nowcoder.com/acm/contest/3667/B来源:牛客网 Y 老师因为贫穷破费(应该是去买乐高玩具了),现在只能将他镀金的门窗变卖换钱了,但这样就不能抵御 ...

  6. 牛客网 Wannafly挑战赛8 A.小Y和小B睡觉觉

    写了一会不想写了... A-小Y和小B睡觉觉 链接:https://www.nowcoder.com/acm/contest/57/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制: ...

  7. 牛客练习赛44 C 小y的质数 (数论,容斥定理)

    链接:https://ac.nowcoder.com/acm/contest/634/C 来源:牛客网 题目描述 给出一个区间[L,R],求出[L,R]中孪生质数有多少对. 由于这是一个区间筛质数的模 ...

  8. 牛客练习赛44 A 小y的序列 (模拟,细节)

    链接:https://ac.nowcoder.com/acm/contest/634/A 来源:牛客网 小y的序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...

  9. 牛客练习赛44 C:小y的质数

    链接:https://ac.nowcoder.com/acm/contest/634/C?tdsourcetag=s_pcqq_aiomsg 来源:牛客网 题目描述 给出一个区间\([L,R]\),求 ...

随机推荐

  1. Thread--生产者消费者

    2个生产者,2个消费者,库存容量2 package p_c_allWait.copy; import java.util.LinkedList; import java.util.List; publ ...

  2. JAVA 算法练习(一)

    用java写了几道编程题目,分享给大家 语法和C语言几乎一样,不懂 java 会 c 也可以看明白的. 最大连续数列和 题目说明 对于一个有正有负的整数数组,请找出总和最大的连续数列.给定一个int数 ...

  3. Linux-socket编程接口介绍

    1.建立连接 (1).socket.socket函数类似于open,用来打开一个网络连接,如果打开成功则返回一个网络文件描述符(int类型),之后我们操作这个网络连接都可以通过这个网络文件描述符. ( ...

  4. jquery时钟

    <script type="text/javascript"> function getDate(){ var mydate = new Date(); //时间对象 ...

  5. 爬虫之xpath解析库

    xpath语法: 1.常用规则:    1.  nodename:  节点名定位    2.  //:  从当前节点选取子孙节点    3.  /:  从当前节点选取直接子节点    4.  node ...

  6. java线程——线程基础

    一,线程之间的关系 线程之间存在两种关系: (1)间接相互制约:相互争夺线程资源: (2)直接相互制约:线程之间的相互合作: 间接相互制约也可以成为互斥,直接相互制约也可以称为同步:同步也包括互斥,互 ...

  7. MyBatis从入门到精通(第9章):Spring集成MyBatis(中)

    MyBatis从入门到精通(第9章):Spring集成MyBatis(中) 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法.应该将应用自身的设计和具体 ...

  8. LGOJ1264 K-联赛

    这题其实不难想到 Description link 题意太长了,概括不来,去题库里扫一眼吧(但是很好懂) Solution \[Begin\] 考虑一个事情:每一个队伍的输局是没有用的 贪心一下,让每 ...

  9. quartz定时定时任务执行两次

    quartz框架没问题. 流程: sping-quartz配置 <?xml version="1.0" encoding="UTF-8"?> < ...

  10. 测试浏览器是否支持JavaScript脚本

    如果用户不能确定浏览器是否支持JavaScript脚本,那么可以应用HTML提供的注释符号进行验证.HTML注释符号是以 <-- 开始以 --> 结束的.如果在此注释符号内编写 JavaS ...