//高精度乘法 #include <bits/stdc++.h> using namespace std; char a[1005],b[1005]; int m[1005],n[1005],k[1006],h; int main() { cin>>a>>b; int la=strlen(a); int lb=strlen(b);//计算长度 for(int i=0; i<la; i++) { m[i]=a[la-1-i]-48; } for(int i=0; i<lb; i++) { n[i]=b[lb-1-i]-48; }//字符转数字 for(int i=0; i<la; i++) { for(int j=0; j<lb; j++) { k[i+j]=k[i+j]+m[i]*n[j]; } }//相乘 for(int i=0; i<1005; i++) { k[i+1]=k[i+1]+k[i]/10; k[i]%=10; }//进位 for(h=1005; h>=0; h--) { if(k[h]!=0) break; }//去前导0 for(h=h; h>=0; h--) { cout<<k[h]; } return 0; }
//高精除以低精 #include <bits/stdc++.h> using namespace std; int main() { char a[1005]; int b,ad[1005],k[1005]; cin>>a>>b; int la=strlen(a); for(int i=0; i<=la-1; i++) ad[i+1]=a[i]-48; int x=0,p=1; for(int i=1; i<=la; i++) { k[i]=(x*10+ad[i])/b; x=(x*10+ad[i])%b; }//相除 while(k[p]==0&&p<la) p++; //去前导0 for(int i=p; i<=la; i++) { cout<<k[i]; } cout<<' '<<x; return 0; }