您的位置:首页 > 运维架构

openjudge 2739 测试了多组数据结果都是正确的,但是oj提交结果为WA,有人感兴趣的话看看

2014-04-11 03:38 232 查看
原题目地址:http://bailian.openjudge.cn/practice/2739/

main函数里主要是调用乘法,乘法里边就是一般的大数乘法

#include <iostream>

#include <cstring>

#define MAX_LEN 200

using namespace std;

int isLarger(char *a,char *b){

    int len1=strlen(a);

    int len2=strlen(b);

    int i,j;

    if(len1>len2) return 1;

    else if(len1<len2) return -1;

    else {

        for(i=0,j=0;i<len1;i++,j++){

            if(a[i]>b[j]) return 1;

            else if(a[i]==b[j]) continue;

            else return -1;

        }

    }

    if (i=len1) return 0;

}

void reverse(char *a){

    int len,i;

    char ch;

    len=strlen(a);

    for(i=0;i<len/2;i++){

        ch=a[i];

        a[i]=a[len-i-1];

        a[len-i-1]=ch;

    }

}

void mul(char *a,char *b){

    int tmp=0,carry=0;

    char sum[MAX_LEN];

    memset(sum,'\0',sizeof(sum));

    int len1,len2;

//    memset(m,0,sizeof(m));

    len1=strlen(a);

    len2=strlen(b);

    reverse(a);

    reverse(b);

    for(int i=0;i<len2;i++){

        //carry=0;

        for(int j=0;j<len1;j++){

            tmp=sum[i+j]+(a[j]-'0')*(b[i]-'0');

            sum[i+j]=tmp%10;

            sum[i+j+1]=tmp/10;

        }

    }

    //int i = 0;

    if(sum[len1+len2-1]!='\0'){

        for(int i=len1+len2-1;i>=0;i--){

            sum[i]+='0';

        }

    }

    else

        for(int i=len1+len2-2;i>=0;i--){

            sum[i]+='0';

        }

    //memcpy(a,sum,strlen(sum));

    strcpy(a,sum);

    reverse(a);

    //]='\0';

}

int main()

{

    int n,x=0;

    char ch;

    cin>>n;

    char a[MAX_LEN],b[MAX_LEN],c[MAX_LEN];

    while(n--){

        x=0;

        memset(c,'\0',sizeof(c));

        memset(b,'\0',sizeof(b));

        memset(a,'0',sizeof(a));

        a[0]='1';

        a[1]='\0';

        cin>>c>>b;

        int t;

       // cout<<a<<"**"<<endl;

        while((t=isLarger(a,b))<=0){

      //      cout<<t<<endl;

        //    cout<<a<<endl;

            mul(a,c);

            x++;

        }

        //cout<<a<<"----";

        cout<<x-1<<endl;

        }

        //cin>>ch;

        //memset(result,0,sizeof(result));

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openjudge
相关文章推荐