【思路】:实际上是找 数字A 中出现的位 bit
- 输入数字A,
- 循环 + if() :检索数字中含有的 Da 记录 并 计算Pa
- 操作: Pa=Da+Pa*10;
【知识点】
(一)通过字符串 数字 找到 bit 然后重新组成数字
for (int i = 0; i < A.length(); i++)
{
NumA = A[i] - '0';
if (NumA == Da)
{
Pa = Pa * 10 + NumA;
}
}
(二)数字 找到 bit 要关注还是3 个循环注意点
和xx等效 for(; a!=0;a=a/10)
由于数字是2^10 所以需要用long long scanf(“%lld”,&a);
long long bitjudge(long long a, long long da){
long long pa = 0;
while (a != 0){//**# 循环条件 #**
int bit=a % 10;//bit
if (bit == da){
pa = pa * 10 + da;
}
a /= 10; //调整
}
return pa;
}
【参考答案1】
void B1016(){
string A, B;
int Da, Db;
int NumA, NumB;
int Pa = 0, Pb = 0;
cin >> A >> Da >> B >> Db;
for (int i = 0; i < A.length(); i++)
{
NumA = A[i] - '0';
if (NumA == Da)
{
Pa = Pa * 10 + NumA;
}
}
for (int i = 0; i < B.length(); i++)
{
NumB = B[i] - '0';
if (NumB == Db)
{
Pb = Pb * 10 + NumB;
}
}
cout << Pa + Pb << endl;
}
【参考答案2】
#include<cstdio>
#include<cstring>
//PAT a+b的部分和
long long bitjudge(long long a, long long da){
long long pa = 0;
while (a!=0){
if (a%10==da){
pa = pa * 10 + da;
}
a /= 10;//调整
}
return pa;
}
void bitNumAdd(){
long long a, da, b, db;
scanf("%lld %lld %lld %lld", &a, &da, &b, &db);
long long pa = bitjudge(a, da);
long long pb = bitjudge(b, db);
printf("%lld", pa + pb);
}
int main(){
bitNumAdd();
return 0;
}