BSG白山极客挑战赛 数数字
来源:互联网 发布:淘宝左侧分类模板代码 编辑:程序博客网 时间:2024/04/28 04:02
数数字
System Message (命题人)
yule_z (测试)
基准时间限制:1 秒 空间限制:262144 KB 分值: 20
统计一下
样例解释:
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示例
23 3 9 103 3 0 10
Output示例
100
刚开始看到这道题,我还以为是,模拟呢,结果我看到 n 的范围的后,瞬间懵逼,肯定不是模拟了,肯定是找规律了。
首先,因为每位的数值都一样,所以在不进位的情况下每位的结果肯定都一样,但是加上进位就不好说了,但是经过计算你会发现,就算加上进位,在千位 或者 万位开始,他的结果的值都开始不变了,进位的数值都是一样的了,只有万位以下的值会受进位的影响而产生差别,所以,只算后几位就可以了,因为我这里算的是 后 6 位,如果不超过 6 位的,直接计算就行,
附上代码:
#include <iostream>#include <cstring>#include <cstdio>#include <string>#include <algorithm>#include <vector>#include <cmath>#include <map>#define LL long long#define MAX_N 50000using namespace std;int main(){int t;scanf("%d",&t);while(t--){int a,b,d,n;scanf("%d%d%d%d",&a,&b,&d,&n);map<int ,int> Map;if(n >= 6) // 大于 6 位 和小于 6 位分成两种方式算{int num = a * 100000 + a * 10000 + a * 1000 + a* 100 + a * 10 + a;int sum = num * b;Map[sum % 1000000 / 100000] = n - 6; // 去除 计算的用的 后 6 位,其他的都和 百万位上的相同 while(sum) // sum 的第一位也就是全数的第一位{Map[sum%10]++;sum /= 10;}}else{int num = 0;for(int i = 0;i < n;i++){num = num * 10 + a;}int sum = num * b;while(sum){Map[sum%10]++;sum /= 10;}}Map[d]++;printf("%d\n",Map[d] - 1);}return 0;}
0 0
- BSG白山极客挑战赛 数数字
- BSG白山极客挑战赛-A-数数字
- BSG白山极客挑战赛-数数字(模拟)
- BSG白山极客挑战赛 -- 数数字 (找规律)
- BSG白山极客挑战赛 A-数数字 (模拟)
- BSG白山极客挑战赛A-数数字
- BSG白山极客挑战赛
- BSG白山极客挑战赛
- BSG白山极客挑战赛——数数字(递推)
- BSG白山极客挑战赛-AVL树
- BSG白山极客挑战赛 - C B君的圆锥
- BSG白山极客挑战赛题解 E 【二分+树状数组】
- BSG白山极客挑战赛 B君的圆锥
- BSG白山极客挑战赛D 解题报告
- BSG白山极客挑战赛-B君的圆锥(三分+数学)
- BSG白山极客挑战赛 -- B君的圆锥 (三分法求最值)
- 【三分法/数学公式】B君的圆锥【51nod】【BSG白山极客挑战赛】
- BSG白山极客挑战赛——B君的圆锥(计算几何)
- PHP相关
- vs2013添加单元测试
- PE文件学习
- Socket编程(三)---仿QQ多人聊天实例
- 互联网上常用的协议以及它们的工作端口
- BSG白山极客挑战赛 数数字
- sql server中syscolumns各个字段的意义
- 网站受攻击的常用手段
- 《听君一席话,胜读十年书》
- 初学android studio 快捷键个人实践总结
- 一个简单的图片裁剪Activity:android-crop
- listView系列之分类显示
- linux下man命令的使用
- 一种完美的降采样插值方法