大数乘法———第一次碰到,记录一下
https://ac.nowcoder.com/acm/contest/5758/H
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
long long n;
while(t--){
int a[100]={},b[100]={},c[100]={};
int aa[100]={},bb[100]={};
cin>>n;
if(n%2==0){
long long now=n/2;
int zhizhen=0;
while(now!=0){
a[zhizhen++]=now%10;
now=now/10;
}
for(int i=0;i<zhizhen;i++){
aa[i+1]=a[i];
}
now=n-1;
int zhizhen2=0;
while(now!=0){
b[zhizhen2++]=now%10;
now=now/10;
}
for(int i=0;i<zhizhen2;i++){
bb[i+1]=b[i];
}
for(int i=1;i<=zhizhen;i++){
int jw=0;
for(int j=1;j<=zhizhen2;j++){
c[i+j-1]=aa[i]*bb[j]+jw+c[i+j-1];
jw=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+zhizhen2]=jw;
}
int zhizhen3=zhizhen+zhizhen2;
while(c[zhizhen3]==0&&zhizhen3>1) zhizhen3--;
for(int i=zhizhen3;i>0;i--) cout<<c[i];
cout<<endl;
}
else{
long long now=(n-1)/2;
int zhizhen=0;
while(now!=0){
a[zhizhen++]=now%10;
now=now/10;
}
for(int i=0;i<zhizhen;i++){
aa[i+1]=a[i];
}
now=n;
int zhizhen2=0;
while(now!=0){
b[zhizhen2++]=now%10;
now=now/10;
}
for(int i=0;i<zhizhen2;i++){
bb[i+1]=b[i];
}
for(int i=1;i<=zhizhen;i++){
int jw=0;
for(int j=1;j<=zhizhen2;j++){
c[i+j-1]=aa[i]*bb[j]+jw+c[i+j-1];
jw=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+zhizhen2]=jw;
}
int zhizhen3=zhizhen+zhizhen2;
while(c[zhizhen3]==0&&zhizhen3>1) zhizhen3--;
for(int i=zhizhen3;i>0;i--) cout<<c[i];
cout<<endl;
}
}
}