337 条题解
-
8
Dragon___Killer LV 8 @ 7 年前
-
67 年前@
-
110 个月前@
Java和Python都支持处理大数,就是对C++ OIer不太友好
Java AC code
Python AC code
只有用C++AC的才有实力
-
01 个月前@
至少对于这种很直白的题python还是很爽的。。。。。。
-
02 年前@
python的巅峰时刻:
-
02 年前@
a = int(input())
b = int(input())
print(a*b)
-
02 年前@
d = int(input())
f = int(input())
print(d*f)
//ha,ha,用c++的手都要残了 -
03 年前@
py 无敌!自带高精度!
-
04 年前@
后两个wa了的,可能是中间爆int了,压四位先乘了再进位会爆int...要不用longlong 要不就压三位
-
04 年前@
#include<iostream>
#include<string>
using namespace std;
const int N = 10001;
void h_multiply_2(int a[], int b[], int c[])
{
int la = a[0];
int lb = b[0];
for(int i=1;i<=la;i++)
{
for(int j=1;j<=lb;j++)
{
c[i+j-1] += a[i] * b[j];
}
}
for(int i=1;i<=la+lb;i++)
{
c[i+1] += c[i] / 10;
c[i] %= 10;
}
c[0] = la+lb;
}
int convert(string s,int n[])
{
int length = s.length();
for(int i=1;i<=length;i++)
{
n[i] = s[length-i] - '0';
}
n[0] = length;
return length;
}
void output(int n[])//n是算好了的高精度数
{
int length = n[0];
if(length==0)
{
cout << 0 << endl;
return;
}
for(int i=length;i>=1;i--)
{
cout << n[i];
}
cout << endl;
}
int trim(int n[])
{
int length = 0;
for(int i=n[0];i>0;i--)
{
if(n[i]!=0)
{
length = i;
break;
}
}
n[0] = length;
return length;
}
int a[N+1];
int b[N+1];
int c2[2*N+1];
int main()
{
string s1, s2;
cin >> s1 >> s2;
convert(s1, a);
convert(s2, b);
h_multiply_2(a,b,c2);
trim(c2);
output(c2);
return 0;
} -
04 年前@
真香!!
-
06 年前@
告诉你什么叫做流!弊!
Python3三行代码解决:哇哈哈哈哈哈哈哈哈哈哈哈哈~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//笑出猪叫 -
06 年前@
其实,除了Python,Haskell也可以一行
-
06 年前@
#include <iostream>
#include <cstring>
using namespace std;
int a[10601],b[10601],c[20601];
int main(int argc, char** argv)
{
int la,lb,x=0,o;
string A,B;
cin>>A>>B;
la=A.length();
lb=B.length();
for(int i=1;i<=la;i++)
{
a[i]=A[la-i]-'0';
}
for(int j=1;j<=lb;j++)
{
b[j]=B[lb-j]-'0';
}
for(int k=1;k<=la;k++)
{
for(int l=1;l<=lb;l++)
{
c[k+l-1]=a[k]*b[l]+c[k+l-1]+x;
x=c[k+l-1]/10;
c[k+l-1]=c[k+l-1]%10;
}
c[k+lb]=x;
x=0;
}
o=la+lb;
while(c[o]==0&&o!=0)
{
o--;
}
for(int oo=o;oo>=1;oo--)
{
cout<<c[oo];
}
return 0;
} -
06 年前@
golang大法
```gopackagepa main
import (
"fmt"
"math/big"
)func main() {
var stra, strb string
fmt.Scanf("%s\n%s", &stra, &strb)
a := big.NewInt(0)
b := big.NewInt(0)
ans := big.NewInt(0)a.SetString(stra, 10)
b.SetString(strb, 10)ans.Mul(a, b)
fmt.Println(ans)
} -
06 年前@
在网上淘得代码,确实是很不错,模拟你现实用笔算的过程,在计算机中模拟出来,真心给个赞。
-
06 年前@
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a1[30000],a2[30000];
int a[30000],b[30000],c[30000],la,lb,lc,i,j,x;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>a1>>a2;
la=strlen(a1);
lb=strlen(a2);
for(i=0;i<=la-1;i++) a[la-i]=a1[i]-48;
for(i=0;i<=lb-1;i++) b[lb-i]=a2[i]-48;
for(i=1;i<=la;i++)
{
x=0;
for(j=1;j<=lb;j++)
{
c[i+j-1]=a[i]*b[j]+x+c[i+j-1];
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+lb]=x;
}
lc=la+lb;
while(c[lc]==0&&lc>1)
lc--;
for(i=lc;i>=1;i--)
cout<<c[i];
cout<<endl;
} -
06 年前@
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a1[30000],a2[30000];
int a[30000],b[30000],c[30000],la,lb,lc,i,j,x;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>a1>>a2;
la=strlen(a1);
lb=strlen(a2);
for(i=0;i<=la-1;i++) a[la-i]=a1[i]-48;
for(i=0;i<=lb-1;i++) b[lb-i]=a2[i]-48;
for(i=1;i<=la;i++)
{
x=0;
for(j=1;j<=lb;j++)
{
c[i+j-1]=a[i]*b[j]+x+c[i+j-1];
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+lb]=x;
}
lc=la+lb;
while(c[lc]==0&&lc>1)
lc--;
for(i=lc;i>=1;i--)
cout<<c[i];
cout<<endl;
} -
07 年前@
Java大法好
-
07 年前@
print(int(input())int(input()))