PAT-1016 部分A+B (15分)(c++)
#include<iostream>
using namespace std;
#include<math.h>
#include<vector>
#include<string>
void scanf();
int find(int num, int f_num);
int resv(int num, int n);
void scanf()
{
int num1, n1, num2, n2;
int recv1, recv2 = 0;
int res1, res2 = 0;
cin >> num1;
cin >> n1;
cin >> num2;
cin >> n2;
recv1 = find(num1, n1);
recv2 = find(num2, n2);
res1 = resv(n1, recv1);
res2 = resv(n2, recv2);
cout << res1 + res2;
}
int resv(int num,int n)
{
double sum = 0;
for (int i = 0; i < n; i++) {
double bs;
bs = pow(10, i);
double num_bs;
num_bs = num * bs;
sum = num_bs + sum;
}
return sum;
}
int find(int num,int f_num)
{
string f_str = "";
string base_num = "";
string q_num = "";
int len_str;
int recv = 0;
base_num = to_string(num);
len_str = base_num.size();
f_str = to_string(f_num);
for (int i = 0; i < len_str; i++) {
//将字符串进行切片
q_num = base_num.substr(i, 1);
if (f_str == q_num) {
recv++;
}
}
//cout << recv;
return recv;
}
int main()
{
scanf();
return 0;
}
代码优化:
对数字进行每一位遍历时,也可以使用取余操作+除操作相结合。从而减少代码量。