PAT乙級 1016 部分A+B
阿新 • • 發佈:2018-12-10
題目很簡單,但是我做的感覺有點囉嗦。
正整數 A 的“DA(為 1 位整數)部分”定義為由 A 中所有 DA 組成的新整數 PA。
例如:給定 A=3862767,DA=6,則 A 的“6 部分”PA 是 66,因為 A 中有 2 個 6。
現給定 A、DA、B、DB,請編寫程式計算 PA+PB。
話說,這些題目描述些繞口,建議看他給的例子。
//1016部分A+B #include<iostream> using namespace std; //傳入A,DA,cDA,得到A中DA出現的次數存到cDA中 void countc(int A, int Da, int & cDa); //傳入DA,cDA,返回PA的值 int calcuP(int Da, int cDa); int main() { int A, DA, B, DB; int cDA = 0, cDB = 0; cin >> A >> DA >> B >> DB; int PA = 0, PB = 0; countc(A, DA, cDA); countc(B, DB, cDB); PA = calcuP(DA, cDA); PB = calcuP(DB, cDB); cout << PA + PB; return 0; } void countc(int A, int Da, int & cDa) { while (A != 0) { int tm = A % 10; if (tm == Da) { cDa++; } A /= 10; } } int calcuP(int Da, int cDa) { if (Da == 0 || cDa == 0) return 0; int P = 0; for (int i = 0; i < cDa; i++) { P += Da; Da *= 10; } return P; }