BSG白山极客挑战赛-A-数数字
2016-05-20 21:30
274 查看
统计一下 aaa ⋯ aaan个a × b 的结果里面有多少个数字d,a,b,d均为一位数。
样例解释:
3333333333*3=9999999999,里面有10个9。
Input
多组测试数据。
第一行有一个整数T,表示测试数据的数目。(1≤T≤5000)
接下来有T行,每一行表示一组测试数据,有4个整数a,b,d,n。 (1≤a,b≤9,0≤d≤9,1≤n≤10^9)
Output
对于每一组数据,输出一个整数占一行,表示答案。
Input示例
2
3 3 9 10
3 3 0 10
Output示例
10
0
这道题是一道规律题,规律很好找,无非是最高位和最低两位的特殊考虑,其他位都是一样的。
但是真正的问题出在一些特殊情况的考虑上,一开始我就是因为没有考虑周全n == 1时的情况,所以一直WA,影响我的好心情 -_-#出师不利嘛。
样例解释:
3333333333*3=9999999999,里面有10个9。
Input
多组测试数据。
第一行有一个整数T,表示测试数据的数目。(1≤T≤5000)
接下来有T行,每一行表示一组测试数据,有4个整数a,b,d,n。 (1≤a,b≤9,0≤d≤9,1≤n≤10^9)
Output
对于每一组数据,输出一个整数占一行,表示答案。
Input示例
2
3 3 9 10
3 3 0 10
Output示例
10
0
这道题是一道规律题,规律很好找,无非是最高位和最低两位的特殊考虑,其他位都是一样的。
但是真正的问题出在一些特殊情况的考虑上,一开始我就是因为没有考虑周全n == 1时的情况,所以一直WA,影响我的好心情 -_-#出师不利嘛。
#include <stdio.h> int num[5], value[5]; int main(int argc, const char * argv[]) { int T; int a, b, d, n; scanf("%d", &T); while (T--) { int sum = 0; scanf("%d %d %d %d", &a, &b, &d, &n); if (n == 1) { int q = a * b; if (q % 10 == d) { sum++; } if (q / 10 == d && d != 0) { sum++; } printf("%d\n", sum); continue; } num[1] = 1; value[1] = a * b % 10; num[2] = 1; value[2] = (value[1] + a * b / 10) % 10; num[3] = n - 2; value[3] = (value[1] + a * b / 10 + (value[1] + a * b / 10) / 10) % 10; num[4] = 1; value[4] = a * b / 10 + (value[1] + a * b / 10) / 10; if (value[4] == 0) { value[4] = -1; } for (int i = 1; i < 5; i++) { if (value[i] == d) { sum += num[i]; } } printf("%d\n", sum); } return 0; }
相关文章推荐
- Google I/O大会,炫酷产品汇总
- BaseActivity与BaseFragment的封装
- C++菱形继承
- LaTex初学者模板
- HDU 5239 Doom 线段树+找规律
- LaTex简历模板 Using the LaTeX Resume Templates
- leetcode:Minimum Depth of Binary Tree
- VS2015 C++/CLR
- XPath提取XML文档数据
- Activity的启动模式
- POJ 1274 - The Perfect Stall
- Algorithm-How To Identifying Same IMG
- java版strspn
- Box2D C++ 教程-查询 World
- 有哪些适合学生参与的 C++,网络编程方面的开源项目?
- 异常处理
- java向上转型和向下转型
- 关于js里undefined的重写问题
- 扩展欧几里德应用 hdoj 1222
- 【Microsoft Word】Aurora插入公式点击Refresh,提示Problems running LaTex解决方法