杭电acm1002,一直wrong answer,怎么改啊~我的测试结果都是正确的
#include<iostream>#include<string>usingnamespacestd;intmain(){charA[20][1000],B[20][1...
#include <iostream>
#include <string>
using namespace std;
int main ()
{
char A[20][1000],B[20][1000],C[1000],D[1000];
int a[1050],b[1050],h[1050],E[20],z[20][1050];
int n,j,k,i,c,m,y,x;
while(cin>>n)
{
if(n==0||n>20) break;
for(c=1 ; c<=n ; c++)
{
cin>>A[c]>>B[c];
j=strlen(A[c]);
k=strlen(B[c]);
if(j>=k)
{strcpy(C,B[c]);strcpy(D,A[c]);y=j;m=j-k;}
else
{strcpy(C,A[c]);strcpy(D,B[c]);y=k;m=k-j;}
for(i=0 ; i<=y; i++)
{
a[i]=0;
b[i]=0;
h[i]=0;
}
E[c]=y;
for(i=1 ; i<=y ; i++)
{
a[i]=D[i-1]-'0';
{
if(i<=m)
b[i]=0;
if(i>m)
b[i]=C[i-m-1]-48;
}
h[i]=a[i]+b[i];
}
for(i=y;i>0;i--)
{
if(h[i]-9>0)
{
h[i-1]++;
h[i]=h[i]-10;
}
}
for(i=0 ; i<=y ; i++)
z[c][i]=h[i];
}
for(i=1 ; i<=n ; i++)
{
cout<<"Case "<<i<<":"<<endl;
cout<<A[i]<<" + "<<B[i]<<" = ";
for(x=0 ; x<=E[i] ; x++)
{
if(z[i][0]>0||x>0)
cout<<z[i][x];
}
cout<<endl;
if(i<n)
cout<<endl;
}
}
return 0;
} 展开
#include <string>
using namespace std;
int main ()
{
char A[20][1000],B[20][1000],C[1000],D[1000];
int a[1050],b[1050],h[1050],E[20],z[20][1050];
int n,j,k,i,c,m,y,x;
while(cin>>n)
{
if(n==0||n>20) break;
for(c=1 ; c<=n ; c++)
{
cin>>A[c]>>B[c];
j=strlen(A[c]);
k=strlen(B[c]);
if(j>=k)
{strcpy(C,B[c]);strcpy(D,A[c]);y=j;m=j-k;}
else
{strcpy(C,A[c]);strcpy(D,B[c]);y=k;m=k-j;}
for(i=0 ; i<=y; i++)
{
a[i]=0;
b[i]=0;
h[i]=0;
}
E[c]=y;
for(i=1 ; i<=y ; i++)
{
a[i]=D[i-1]-'0';
{
if(i<=m)
b[i]=0;
if(i>m)
b[i]=C[i-m-1]-48;
}
h[i]=a[i]+b[i];
}
for(i=y;i>0;i--)
{
if(h[i]-9>0)
{
h[i-1]++;
h[i]=h[i]-10;
}
}
for(i=0 ; i<=y ; i++)
z[c][i]=h[i];
}
for(i=1 ; i<=n ; i++)
{
cout<<"Case "<<i<<":"<<endl;
cout<<A[i]<<" + "<<B[i]<<" = ";
for(x=0 ; x<=E[i] ; x++)
{
if(z[i][0]>0||x>0)
cout<<z[i][x];
}
cout<<endl;
if(i<n)
cout<<endl;
}
}
return 0;
} 展开
展开全部
虽然很想说赞 但是这种是JAVA大数暴力 给没学的人AC了也没意义
有时候样例都是浮云,要逻辑周全才能AC
需要自己DEGUB才能提高
给你C ++数组模拟的代码之前说下
---输入输出不相影响,可以边输入变输出,循环时需要的话就初始化就好了
这样会减少好多代码 有利于找错误
int a[max],b[max];
char A[max],B[max];
int n;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
int j;
memset(a,0,sizeof(a));//初始化a和b数组为零,相当for一遍
memset(b,0,sizeof(b));
if(i)printf("\n");
printf("Case %d:\n",i+1);
scanf(" %s",A);
printf("%s + ",A);
for(int j=0; j<strlen(A); j++)
a[strlen(A)-1-j]=A[j]-'0';
scanf(" %s",B);
printf("%s = ",B);
for(int j=0; j<strlen(B); j++)
b[strlen(B)-1-j]=B[j]-'0';
for(j=0; j<max; j++)
{
a[j]+=b[j];
if(a[j]>9){a[j+1]+=a[j]/10;a[j]%=10;}
}
int f=0;
for( j=max; j>=0; j--)
{
if(a[j])f=1;
if(f)printf("%d",a[j]);
}
if(!f)printf("0");
printf("\n");
A[0]='\0';
B[0]='\0';
}
return 0;
}
有时候样例都是浮云,要逻辑周全才能AC
需要自己DEGUB才能提高
给你C ++数组模拟的代码之前说下
---输入输出不相影响,可以边输入变输出,循环时需要的话就初始化就好了
这样会减少好多代码 有利于找错误
int a[max],b[max];
char A[max],B[max];
int n;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
int j;
memset(a,0,sizeof(a));//初始化a和b数组为零,相当for一遍
memset(b,0,sizeof(b));
if(i)printf("\n");
printf("Case %d:\n",i+1);
scanf(" %s",A);
printf("%s + ",A);
for(int j=0; j<strlen(A); j++)
a[strlen(A)-1-j]=A[j]-'0';
scanf(" %s",B);
printf("%s = ",B);
for(int j=0; j<strlen(B); j++)
b[strlen(B)-1-j]=B[j]-'0';
for(j=0; j<max; j++)
{
a[j]+=b[j];
if(a[j]>9){a[j+1]+=a[j]/10;a[j]%=10;}
}
int f=0;
for( j=max; j>=0; j--)
{
if(a[j])f=1;
if(f)printf("%d",a[j]);
}
if(!f)printf("0");
printf("\n");
A[0]='\0';
B[0]='\0';
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.io.File;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String args[]){
//Scanner sc = new Scanner(new File("a.txt"));
Scanner sc = new Scanner(System.in);
int n = sc.nextInt() ;
boolean bool = false ;
for(int i=1;i<=n;i++){
if(bool){
System.out.println();
}else{
bool = true ;
}
BigInteger a = new BigInteger(sc.next());
BigInteger b = new BigInteger(sc.next());
System.out.println("Case "+i+":");
System.out.println(a+" + "+b+" = "+a.add(b));
}
}
}
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String args[]){
//Scanner sc = new Scanner(new File("a.txt"));
Scanner sc = new Scanner(System.in);
int n = sc.nextInt() ;
boolean bool = false ;
for(int i=1;i<=n;i++){
if(bool){
System.out.println();
}else{
bool = true ;
}
BigInteger a = new BigInteger(sc.next());
BigInteger b = new BigInteger(sc.next());
System.out.println("Case "+i+":");
System.out.println(a+" + "+b+" = "+a.add(b));
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询