PTA.1016.为什么运行超时

img


#include <iostream>
#include <cmath>
using namespace std;
inline int Than(int ,int);
inline int Then(int ,int);
int main()
{
    int num[4];
    int  i,a,b;
    for(i=0;i<4;i++){
        cin>>num[i];
    }
    a=Then(Than(num[0],num[1]),num[1]);
    b=Then(Than(num[2],num[3]),num[3]);      
    cout<<a+b<<endl;
}
inline int Than(int a ,int b)              //计算有几个相同的数字
{
    int i,c=a,i_1=0,d,e;
    for(i=0;;i++)
    {
        c=c/10;
        if(c==0)break;
    }
    for(;i!=(-1);i--)
    {
        d=a/pow(10,i);
        if(d==b)i_1++;
        e=pow(10,i);
        a=a%e;
    }
    return(i_1);
}
inline int Then(int a,int b)               //计算相应的PA,PB;
{
    int c=1;
    a=a-1;
    for(;a!=0;a--)
    {
        c=c+pow(10,a);
    }
    return(b*c);
}

img


另外,可不可以数字先转换成字符,之后通过字符的比较,得到位数,再将单个字符转换成字符串,之后相加
//现在的问题是得不到位数

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
    unsigned long Num[4];
    unsigned long i,a,a1,b,b1,e,f;
    e=f=0;
    for(i=0;i<4;i++){
        cin>>Num[i];
    }
    a=Num[0],a1=Num[3],b=Num[2],b1=Num[3];
    ostringstream oss;
    oss<<a;
    string str_a=oss.str();
    oss<<a1;
    string str_a1=oss.str();
    oss<<b;
    string str_b=oss.str();
    oss<<b1;
    string str_b1=oss.str();
    for(i=0;i<str_a.length();i++){                //计算相同的字符,可是为什么不能
        if(str_a[i]==str_a1){
            e++;
        }
    }
    for(i=0;i<str_b.length();i++){
        if(str_b[i]==str_b1){
            f++;
        }
    }

    //数字先转换成字符,之后通过字符的比较,得到位数,再将单个字符转换成字符串,之后相加
    //现在的问题是得不到位数

}


img