【问题描述】
正整数A的“D(为1位整数)部分”定义为由A中所有DA组成的新整数P
。例如:给定A = 3862767,D
= 6,则A的“6部分”PA是66,因为A中有2个6;给定A = 3862767,D
= 1,则A的“1部分”P
是0,因为A中有0个1。
现给定A、D、B、D
,请编写程序计算P
+ P
【输入形式】
输入在一行中依次给出A、D、B、D
,中间以空格分隔,其中0 < A, B < 10
。
【输出形式】
在一行中输出 P + P
的值。
【样例输入】
3862767 6 13530293 3
【样例输出】
399
法一:长整型的计算
#include <iostream>
using namespace std;
int fun(long long int A,int a)
{
long long int sum=0;
while(A!=0)
{
if(A%10==a)
{
sum=sum*10+a;//从6变成66 -> 6*10+6
}
A=A/10;
}
return sum;
}
int main()
{
long long int a,b,A,B;
cin>>A>>a>>B>>b;
long long int sum1=fun(A,a);
long long int sum2=fun(B,b);
cout<<sum1+sum2<<endl;
return 0;
}
int的取值范围为:-2147483648 ~2147483647
long long的最大值:9223372036854775807
如何查看int的最大最小值:
#include<stdio.h>
#include<limits.h>
int main()
{
int min = INT_MIN;
int max = INT_MAX;
}
法二:字符串读取
//'9'-'0'=9 -> 将字符型化为整型
'9'-'2'=7//整型才具有加减运算
#include <iostream>
using namespace std;
int main()
{
string s1,s2;
int n1,n2,sum1=0,sum2=0;
cin>>s1>>n1>>s2>>n2;
int l1=s1.length(),l2=s2.length();
for(int i=0;i<l1;i++)
{
if(s1[i]-'0'==n1)
sum1=sum1*10+n1;
}
for(int i=0;i<l2;i++)
{
if(s2[i]-'0'==n2)
sum2=sum2*10+n2;
}
int sum=sum1+sum2;
cout<<sum<<endl;
return 0;
}