训练日记2019.11.22 快速幂模板

2019.11.22 星期五
终于到感恩节了,我已经停止训练一周了,今天刚好来补补思路,不然的话感觉什么都不会了,脑子根本不好使。

感恩节到了,我的假期也开始了,我们的pa08是一个大作业,表达式树,写了加分那种,但是挺难的,源码浩浩荡荡多达2k多行,比我写过的任何程序都长,一个变量改不好可能引发雪崩式效应。打acm这么久了,我还真没因为哪个代码太复杂就轻易说放弃,坦率来讲,这个课的作业还真的没让我觉得特别难的(ta瞎扣分另当别论,我header少写了一个就扣了8分)。6大任务必须全部完成,然后就当同学一个个愁眉苦脸的时候我想到了传说中的布鲁特福斯算法(brute force),也就是暴力,虽然暴力不是万能的,但是好使就行了。直接在里面加了一个单例模式,什么玩意儿都一股脑放进去,然后当作全局变量实用。讲道理,习惯了在main中声明变量的同学可能不太会这种做法,但是acm里这却是很常见的做法,今年认识的进wf的老哥就是从来都把main当作方法调用器hhhh。然后一个一个加,这个问题就轻松转化为需要什么声明什么的问题了,昨天一连突破了5个任务,就剩最后一个了,同学都忍不住了,说你咋这么能熬,一下子电脑跟前坐7个小时,我说是啊,不写完这些东西我心里不踏实啊,后天到了加州还怎么放心地玩耍?再说了,一次比赛也得5个小时,中间不可能是一帆风顺,还有很多的不可做题,但是你不得不去面对它并且战胜它。反正我该写的已经都写完了,剩下的事情交给回来了。其实对我而言,加不加分倒是其次,不加分能怎么样,我还是个A,但是这对我来说不是加不加分的事情了,男孩子没有谁不是争强好胜的,重要的是证明自己,别把结果看得那么重,重要的是过程。

这一个学期每天过得都非常努力,尽管很多事情并不在我的预料范围内,就比如这么多课,icpc也因为那个该死的最短路没能进regional,regional场外同步写出来了6道,只能眼睁睁看着我们学校被淘汰而无法为校出战,心里真的很不爽,无力和难过不足以形容我的失落,但是没关系,人生也并不是一帆风顺的,我定然不是最聪明的那个,以前高中的时候我就发现这个问题了,给定同样时间,我完成的质量可能没别人好,但我的优势是能把这个过程坚持下去,并且多线程,我相信有心就不怕迟。我没觉得我是从学校逃走了,相反,我觉得我自己应该去享受享受假期,享受享受生活,这是我应得的,毫无负担,心安理得,这才是生活的真谛。我上个学期浑浑噩噩过了那么久,假期似乎成为了唯一可以逃避的时候,但现在我意识到了,这是我的阵地,我哪都不会去,我要坚守到底!

快速幂模板,动规还是要学,过几天去圣地亚哥了,接着复习!

#include <bits/stdc++.h>
using namespace std;
#define limit 110000 + 5//防止溢出
#define INF 0x3f3f3f3f
#define inf 0x3f3f3f3f3ff   
#define lowbit(i) i&(-i)//一步两步
#define EPS 1e-6
#define ff(a) printf("%d\n",a );
#define MOD 1e9 + 7
typedef long long ll;
void read(int &x){
    char ch = getchar();x = 0;
    for (; ch < '0' || ch > '9'; ch = getchar());
    for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
}//快读
ll n , m, k;
ll quickPow(ll base ,ll expo){
    ll ans = 1;
    while(expo > 0){
        if(expo & 1){
            ans = ans * base % k;
        }
        base = base * base % k;
        expo >>= 1;//敲掉
    }
    return ans % k;//快速幂,降次生角
}
int main(){
    freopen("C:\\Users\\administrator01\\CLionProjects\\untitled14\\data.txt", "rt", stdin);
    scanf("%d%d%d" , &n, &m , &k);
    ll res = quickPow(n, m);
    printf("%lld^%lld mod %lld=%lld", n , m , k , res % k);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值