快速幂,大整数取模
2018-02-06 19:37
218 查看
快速幂不解释,这里的大整数是指long long无法存储的整数(好像有一点鸡肋)
传送门:
gcd和lcm:点击这里
上代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char n[10000000];
int qmod(int a,int b,int c)
{
if(b==0) return 1;
int x=qmod(a,b/2,c);
long long ans=(long long)x*x%c;
if(b%2==1) ans=ans*a%c;
return (int)ans;
}
int biginter_mod(char n[],int m)
{
int ans=0;int len=strlen(n);
for(int i=0;i<len;++i)
ans=(10*ans+n[i]-'0')%m;
return ans;
}
int main()
{
int k;cin>>k;int x,y,z;
if(k==1) {
cin>>x>>y>>z;
cout<<qmod(x,y,z);
}
else
{
scanf("%s%d",n,&x);
cout<<biginter_mod(n,x);
}
}
END
传送门:
gcd和lcm:点击这里
上代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char n[10000000];
int qmod(int a,int b,int c)
{
if(b==0) return 1;
int x=qmod(a,b/2,c);
long long ans=(long long)x*x%c;
if(b%2==1) ans=ans*a%c;
return (int)ans;
}
int biginter_mod(char n[],int m)
{
int ans=0;int len=strlen(n);
for(int i=0;i<len;++i)
ans=(10*ans+n[i]-'0')%m;
return ans;
}
int main()
{
int k;cin>>k;int x,y,z;
if(k==1) {
cin>>x>>y>>z;
cout<<qmod(x,y,z);
}
else
{
scanf("%s%d",n,&x);
cout<<biginter_mod(n,x);
}
}
END
相关文章推荐
- 从大整数乘法的实现到 Karatsuba 快速算法
- 腾讯面试题 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
- Ackerman函数的递归、全排列的递归实现、整数划分的递归、二分搜索的递归、合并排序的递归、.快速排序
- POJ 1845-Sumdiv(快速幂取模+整数唯一分解定理+约数和公式+同余模公式)
- POJ 1995 Raising Modulo Numbers (数论-整数快速幂)
- 整数快速幂取余
- POJ 2154 Color(组合数学-波利亚计数,数论-欧拉函数,整数快速幂)
- 算法 - 快速求一个整数的7倍
- 用来快速读入int类型整数的read函数(自定义)
- 整数快速幂取余
- 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
- Hust oj 1521 Marshal's Confusion III(整数快速幂)
- 快速生成大量指定位数的不重复随机整数
- 001-整数快速幂-归纳法-《算法设计技巧与分析》M.H.A学习笔记
- POJ 2154 Color(组合数学-波利亚计数,数论-欧拉函数,整数快速幂)
- 如何将一个整数快速向100取整
- c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)
- 整数快速幂hdu(1852)
- 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
- 快速读入整数