回 帖 发 新 帖 刷新版面

主题:A+B problem II

#include<iostream>
#include<string>
using namespace std;
int main(void)
{
    int n,i,length1,length2,k=0,temp,x,y;
    scanf("%d",&n);
    if (n<1 || n>20)
    {
        return -1;
    }
    i=1;
    while(i<=n)
    { 
        k=0;
    char str1[1200]={'\0'},str2[1200]={'\0'},str3[1200]={'\0'};        
    scanf("%s %s",str1,str2);
    length1=strlen(str1);
    length2=strlen(str2);
    while(length1>=1 && length2>=1)
    {   
        if(str3[k]!='\0')
        {
            temp=str1[--length1]+str2[--length2]+str3[k]-3*'0';
            if (temp>=10)
            {
                str3[k]=temp%10+'0';
                str3[k+1]=temp/10+'0';
            }
            else
            {
                str3[k]=temp+'0';
            }
        }
        else
        {
            temp=str1[--length1]+str2[--length2]-2*'0';
            if (temp>=10)
            {
                str3[k]=temp%10+'0';
                str3[k+1]=temp/10+'0';
            }
            else
            {
                str3[k]=temp+'0';
            }
        }
        k++;
    }
    while(length1>=1)
    {
        if(str3[k]!='0')
        {
            temp=str1[--length1]+str3[k]-2*'0';
            if (temp>=10)
            {
                str3[k]=temp%10+'0';
                str3[k+1]=temp/10+'0';
            }
            else
            {
                str3[k]=temp+'0';
            }
        }
        else
        {
            str3[k]=str1[--length1];
        }
        k++;
    }
    while(length2>=1)
    {
        if(str3[k]!='0')
        {
            temp=str2[--length2]+str3[k]-2*'0';
            if (temp>=10)
            {
                str3[k]=temp%10+'0';
                str3[k+1]=temp/10+'0';
            }
            else
            {
                str3[k]=temp+'0';
            }
        }
        else
        {
            str3[k]=str2[--length2];
        }
        k++;
    }
    k=strlen(str3);
    for(x=0,y=k-1;x<y;x++,y--)
    {
        temp=str3[x];
        str3[x]=str3[y];
        str3[y]=temp;
    }
        
    printf("case %d:\n%s+%s=%s\n",i,str1,str2,str3);
    if (i!=n)
    printf("\n");
    i++;    
        
    }
    return 0;
    
}
怎么这样写A+B problemII(http://acm.hdu.edu.cn/showproblem.php?pid=1002)放入ACM编译器中显示错误答案,但是我在vc++6.0是完全正确的,求解!

回复列表 (共2个回复)

沙发

说实话实在打不起精神做一遍题目,测试了下发现几个错误,
首先,输出格式不符(大小写和空格)
其次,00 + 09 应该是为9 而不是09,这种例子可能会有。

其它的你再测测吧,ACM的题目的乐趣就在于不断提交找到自己的问题所在。

板凳

用的是VS2010写的 c++


#include<iostream>
#define MaxSize 10
using namespace std;
void main()
{
    char num1[MaxSize]={'\0'},num2[MaxSize]={'\0'};
    cout<<"请输入两个数:\n";
    cin>>num1>>num2;
    int number1=0,number2=0;
    for(int i=0;num1[i]!='\0';i++)
    {
        number1+=num1[i]-'0';
        number2+=num2[i]-'0';
    }
    cout<<num1<<"+"<<num2<<"="<<number1+number2<<endl;
}


这样不知可不可以啊
怎么将它传给ACM啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册