openjudge 2739 測試了多組數據結果都是正確的,但是oj提交結果為WA,有人感興趣的話看看


原題目地址: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;
}

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com