#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);
}
另外,可不可以数字先转换成字符,之后通过字符的比较,得到位数,再将单个字符转换成字符串,之后相加
//现在的问题是得不到位数
#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++;
}
}
//数字先转换成字符,之后通过字符的比较,得到位数,再将单个字符转换成字符串,之后相加
//现在的问题是得不到位数
}