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

来源:互联网 发布:阿里云域名解析到端口 编辑:程序博客网 时间:2024/06/05 21:11

原题目地址: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;
}
0 0
原创粉丝点击