正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。
现给定 A、DA、B、DB,请编写程序计算 PA+PB。
输入格式:
输入在一行中依次给出 A、DA、B、DB,中间以空格分隔,其中 0。
输出格式:
在一行中输出 PA+PB 的值。
输入样例 1:
3862767 6 13530293 3
输出样例 1:
399
输入样例 2:
3862767 1 13530293 8
输出样例 2:
0
分析
这道题主要就是要找到PA的计算规律
- 输入数据
- 利用除法运算和取余运算对数据进行分解,统计给出部分的个数
- 算出PA,PB的规律
(10^n-1)/9 * D;
- 求和
源码
#include
#include int getPi(long i, int DI);int getPi(long i, int DI)
{long pi;int tmp, count = 0;while(i>0){tmp = i%10;if(tmp == DI){count++;}i /= 10;}pi = (pow(10,count)-1) / 9 * DI;return pi;
}int main()
{long A, B, PA, PB, sum;int DA, DB;scanf("%ld %d %ld %d", &A, &DA, &B, &DB);PA = getPi(A,DA);PB = getPi(B,DB);sum = PA + PB;printf("%ld", sum);return 0;
}
参考资料
- 找规律
https://www.zybang.com/question/488aa8d44041738bbbcd70bf6110e246.html