首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

PAT 乙級 1016:部分 A+B — 指定數字拼接求和

     編輯:關於C語言

題目大意

給定整數 A, DA, B, DB,其中 DA, DB 為單一數字 (0-9)。定義 A 的「DA 部分」PA 為 A 中所有 DA 拼接而成的新整數(如 A=3862767, DA=6 → PA=66)。同理得 PB。輸出 PA + PB。

解題邏輯

  1. 以字串讀入 A, B(10^10 內,long long 也可,但字串處理更直觀)。
  2. 掃描字串,遇到目標數字即 result = result * 10 + digit 累積。
  3. 輸出兩結果之和。

完整 C 語言實現

#include 
#include 

int main() {
    char sa[20], sb[20];
    int da, db;
    scanf("%s %d %s %d", sa, &da, sb, &db);

    long long pa = 0, pb = 0;
    for (int i = 0; sa[i]; i++)
        if (sa[i] - '0' == da) pa = pa * 10 + da;
    for (int i = 0; sb[i]; i++)
        if (sb[i] - '0' == db) pb = pb * 10 + db;

    printf("%lld\n", pa + pb);
    return 0;
}

樣例驗證

輸入:3862767 6 13530293 3
PA=66, PB=333 → 輸出 399

輸入:3862767 1 13530293 8
PA=0, PB=0 → 輸出 0

邊界情況

  • 目標數字不存在 → 部分值為 0。
  • 全為目標數字 → 部分值等於原數(如 A=111, DA=1 → PA=111)。
  • 結果和可能超 int,用 long long 安全。

總結

字串掃描 + 位權累積的基礎題,考察字元轉數字、長整數輸出、邊界為 0 的處理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved