KevinMark @ 2022-11-25 15:13:44
too short on line 1? 第一个样例过不了
#include<stdc++.h>
using namespace std;
int main()
{
//定义两个字符串,输入
string a, b;
cin >> a >> b;
int lena, lenb = 0;
lena = a.length();
lenb = b.length();
//逆序存放数字
int arra[9999] = { 0 };
int arrb[9999] = { 0 };
for (int i = 1; i <= lena; i++)
{
arra[i] = a[lena - i] - '0';
}
for (int i = 1; i <= lenb; i++)
{
arrb[i] = b[lenb - i] - '0';
}
//定义结果数组,错位相加
int c[99999] = { 0 };
for (int j = 1; j <= lenb; j++)
{
for (int i = 1; i <= lena; i++)
{
c[i + j - 1] += arra[i] * arrb[j];
}
}
//处理进位问题
for (int i = 1; i <= lena + lenb - 1; i++)
{
if (c[i] > 9)
{
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
}
//删除c中多余的0
int lenc = lena + lenb;
while (c[lenc] == 0 && lenc > 1)
{
lenc--;
}
//按照lenc输出
for (int i = lenc; i >= 1; i--)
{
cout << c[i];
}
return 0;
}
by Alex_smy @ 2022-11-25 15:18:01
你看下题解吧,我搞不懂
by Alex_smy @ 2022-11-25 15:18:32
我最讨厌高精
by Jasoncwx @ 2022-11-25 15:25:32
@KevinMark too short on line 1
就是你在第
by AC_CSP @ 2022-11-25 15:42:32
@momo430
你看下题解吧,我搞不懂
我最讨厌高精
这很有意义吗??!
by WiliestJoseph15 @ 2022-11-26 11:06:41
80分代码:
#include<bits/stdc++.h>
using namespace std;
int a_len,b_len,da_len,da[100000000]={0};
bool qd0=true;
char a[2001],b[2001];
int A[2001],B[2001],C[2001];
int main(){
cin>>a>>b;
for(a_len=0;a[a_len]!=NULL;a_len++){
A[a_len]=a[a_len]-48;
}
reverse(A,A+a_len);
for(b_len=0;b[b_len]!=NULL;b_len++){
B[b_len]=b[b_len]-48;
}
reverse(B,B+b_len);
da_len=b_len+a_len-1;
for(int i=0;i<a_len;i++){
for(int j=0;j<b_len;j++){
da[i+j]+=A[i]*B[j];
}
}
for(int i=0;i<da_len;i++){
if(da[i]>9){
da[i+1]+=da[i]/10;
da[i]%=10;
}
}
if(da[da_len]>0){
da_len++;
}
for(int i=da_len-1;i>=0;i--){
if(qd0&&da[i]==0&&da_len!=1){
continue;
}
else{
qd0=false;
}
cout<<da[i];
}
return 0;
}
输入: 0 0
输出: 0
AC代码:
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int a_len,b_len,da_len,da[100000000]={0};
char a[2001],b[2001];
int A[2001],B[2001],C[2001];
int main(){
cin>>a>>b;
for(a_len=0;a[a_len]!=NULL;a_len++){
A[a_len]=a[a_len]-48;
}
reverse(A,A+a_len);
for(b_len=0;b[b_len]!=NULL;b_len++){
B[b_len]=b[b_len]-48;
}
reverse(B,B+b_len);
da_len=b_len+a_len-1;
for(int i=0;i<a_len;i++){
for(int j=0;j<b_len;j++){
da[i+j]+=A[i]*B[j];
}
}
for(int i=0;i<da_len;i++){
if(da[i]>9){
da[i+1]+=da[i]/10;
da[i]%=10;
}
}
if(da[da_len]>0){
da_len++;
}
while(da[da_len-1]==0){
da_len--;
}
if(da_len<0){
cout<<0<<endl;
return 0;
}
for(int i=da_len-1;i>=0;i--){
cout<<da[i];
}
return 0;
}
输入: 0 0
输出: 0
这点很奇怪,我两段代码都输出0,但第一段代码却不能过
by KevinMark @ 2022-11-26 14:27:31
@Jasoncwx 输入是0和10 输出是0,完全一模一样呀