hdu4762之大数乘法
来源:互联网 发布:mysql如何查看 编辑:程序博客网 时间:2024/06/10 21:39
只知道是n/m^(n-1),不知道为什么
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<queue>#include<algorithm>#include<map>#include<iomanip>#define INF 99999999using namespace std;const int MAX=10000+10;const int Base=10;int a[MAX],b[MAX],sum[MAX];void Mult(int *A,int *B,int *Sum){int i,j,k,m=A[0],n=B[0];int all=m+n-1;memset(Sum,0,sizeof(int)*(all+3));for(i=1,k=1;i<=m;++i){k=i;if(A[i]){for(j=1;j<=n;++j,++k){Sum[k]+=A[i]*B[j];if(Sum[k]>=Base){Sum[k+1]+=Sum[k]/Base;Sum[k]=Sum[k]%Base;}}}}while(Sum[k]>=Base){Sum[k+1]+=Sum[k]/Base;Sum[k]=Sum[k++]%Base;}if(!Sum[k])--k;Sum[0]=k;}void Copy(int *A,int *B){for(int i=0;i<=B[0];++i)A[i]=B[i];}int main(){int m,n,t;cin>>t;while(t--){cin>>m>>n;sum[0]=sum[1]=1;b[1]=m%10,m=m/10;b[2]=m;if(b[2])b[0]=2;else b[0]=1;for(int i=0;i<n-1;++i){//求m^(n-1),要是n大的话可以用快速幂求 Copy(a,sum);Mult(a,b,sum);}int gcd=INF;for(int i=2;i<=n;++i){//求公约数 if(n%i)continue;int p=0;for(int j=sum[0];j>=1;--j){p=(p*10+sum[j])%i;}if(!p)gcd=i;}if(gcd != INF){//除公约数 for(int i=sum[0];i>=1;--i){if(i != 1)sum[i-1]+=(sum[i]%gcd)*10;sum[i]/=gcd;}while(sum[sum[0]] == 0)--sum[0];n/=gcd;}cout<<n<<'/';for(int i=sum[0];i>=1;--i)cout<<sum[i];cout<<endl;}return 0;}
- hdu4762之大数乘法
- hdu4762(数学期望+大数)
- 大数运算之大数乘法
- 大数运算之乘法
- FFT之大数乘法
- 密码学之大数乘法
- java大数(2013长春网络赛)--hdu4762
- 算法解析之大数乘法
- 大数运算之加减乘法
- 大数运算之乘法函数
- 2016蓝桥杯假期任务之《大数乘法》
- 2016年算法之大数乘法
- 大数运算之加法乘法---JAVA实现
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- COJ 1373 STL中的map每日四水
- A star 寻路算法实现(C++版本)
- 【PAT Advanced Level】1006. Sign In and Sign Out (25)
- hashCode和equals方法的理解
- 编写一个字符串复制函数mystrcopy(char*s1,char*s2,int m),将字符串s2中从第m个开始全部字符都复制到s1中
- hdu4762之大数乘法
- uva 10562
- Trystack中文网为您提供最后一次优惠机会(门票七五折)
- Eclipse下配置主题颜色
- C++类的访问权限问题
- java实现归并排序及求逆序对
- 【ML】【python】Machine Learning in Action
- 零基础学Qt编程 代码提示
- K-D Tree