大数幂次的mod值( a的b次方 b极大 快速幂已经不适用)

#include<cstdio> #include<iostream> #define int long long using namespace std; string y; int x,p; int Bigquick_mi(int x,int p,string y){ int res=1; for(int i=y.size()-1;i>=0;i--) { int t=y[i]-'0'; for(int j=1;j<=t;j++) { res=res*x%p; } int n=1; for(int j=1;j<=10;j++) { n=n*x%p; } x=n; } return res; } signed main(){ int T; cin>>T; while(T--) { cin>>x>>y>>p; cout<<Bigquick_mi(x,p,y)<<endl; } return 0; }
  1. (a + b) % p = (a % p + b % p) % p 
  2. (a - b) % p = (a % p - b % p ) % p 
  3. (a * b) % p = (a % p * b % p) % p 
  4. a ^ b % p = ((a % p)^b) % p 

 

 

本题目要用欧拉降幂;

 

 

 

 

注意:因为头文件声明:#define int long long,然后int main改成signed main就行了

注意到 #define int long long 而 main 函数必须返回一个 int 值,所以不能使用 int main()。

那怎么办呢?通常使用 signed main,因为 signed 等效替代于 signed int,也就是有符号整型,这与 int 别无二致,并且不会导致奇怪的 CE。

int本来就是signed int。int = signed int = signed,就像unsigned = unsigned int

当你不确定过程中会不会爆 int 的时候,可以这么写。

同样的字节数,如果保存符号位,范围为正负,数字位相对少一,绝对值范围小

总结:

头文件声明#define int long long,防止爆int


__EOF__

本文作者孙佰淦
本文链接https://www.cnblogs.com/lllusionary/articles/16165826.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   皮卡Q  阅读(103)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示