PAT B1016: 部分A+B

【思路】:实际上是找 数字A 中出现的位 bit

  1. 输入数字A,
  2. 循环 + if() :检索数字中含有的 Da 记录 并 计算Pa
  3. 操作: 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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值