数数字(找规律+模拟)
数数字
Description
统计一下 aaa ⋯ aaa * b(n 个 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
对于每一组数据,输出一个整数占一行,表示答案。
Sample Input 1
2 3 3 9 10 3 3 0 10
Sample Output 1
10 0
思路:如果a*b<10,那么不会产生进位,如果a*b=d,就有n个d,否则没有
如果a*b>=10,会产生进位,
如果n<3,直接算出来结果,判断有多少个就可以;
如果n>=3,可以发现(或者说推出)最多有4个不同的数字,
设结果从右往左1~(n+1)位,第一位会出现1次,第二位会出现1次,第(n+1)位会出现1次,剩下的都和第n位一样(即出现n-2次) (注意:其他那三个数有可能有相同的,如:7777*8=62216),
所以我们只要求出(aaa*b),在根据规律就可以知道每个数字出现了几次。
#include<cstdio>#include<cstring>using namespace std;int main(){int T;scanf("%d",&T);int a,b,d,n;while(T--){scanf("%d%d%d%d",&a,&b,&d,&n);int x,ans=0;int p[10];if(a*b<10){x=a*b;if(x==d)printf("%d\n",n);else printf("0\n");}else if(n<3){for(int i=1;i<=n;i++)ans=ans*10+a;ans*=b;int cnt=0;while(ans){x=ans%10;ans/=10;if(x==d) cnt++;}printf("%d\n",cnt); }else {ans=(a*100+a*10+a)*b;for(int i=1;i<=4;i++){p[i]=ans%10;ans/=10;}int cnt=0;if(d==p[1])cnt++;if(d==p[2])cnt++;if(d==p[3])cnt+=n-2;if(d==p[4])cnt++;printf("%d\n",cnt);}}return 0; }
数数字(找规律+模拟)相关推荐
- 51nod 1770 数数字 找规律,注意进位,时间复杂度O(n)
题目: 这题很简单,找规律即可. 考虑两次进位: 1.a*b时的进位. 2.aa*b时加法时进位. 代码: #include <bits\stdc++.h> using namespace ...
- [剑指offer]面试题第[44]题[JAVA][数字序列中某一位的数字][找规律]
[问题描述][中等] [解答思路] 找规律 时间复杂度:O(logN) 空间复杂度:O(logN) class Solution {public int findNthDigit(int n) {in ...
- shell习题第15题:看数字找规律
[题目要求] 请仔细查看如下几个数字的规律,并使用shell脚本输出后面的十个数字 10 31 53 77 105 141... ... [核心要点] 计算两个数值之间的差值 [脚本] #!/bin/ ...
- Codeforce-CodeCraft-20 (Div. 2)-B. String Modification (找规律+模拟)
Vasya has a string s of length n. He decides to make the following modification to the string: Pick ...
- 面试题:看数字找规律
第一种----等差数列:是指相邻之间的差值相等,整个数字序列依次递增或递减的一组数. 1.等差数列的常规公式.设等差数列的首项为a1,公差为d ,则等差数列的通项公式为an=a1+(n-1)d (n为 ...
- java小程序——数字找规律小游戏
运行程序,出现<span style="font-family: Arial, Helvetica, sans-serif;">3,5,10,17,29, 根据规律,填 ...
- 2020海信测评几道行测数字找规律题目(不按顺序)
大脑它不会自己动啊天 ① 2 2 5 7 11 15 (23) 2*2+1=5:2*5+1=11:2*7+1=15: 2*11+1=23 ②17 2 19 4 18 3 15 (0) 分组数列,两个数 ...
- 史上最强数字找规律题
考大家一道题. 这是一个比较著名的数列: 2, 271, 2718281, 27182818284590452353602874713526624977572470936999595749669676 ...
- jzoj2136-(GDKOI2004)汉诺塔【找规律,模拟】
正题 大意 将汉诺塔的规则改为只能移动到相邻的柱子,然后求有n个圆盘时在第m步时每个盘所在的位置. 解题思路 我们先将3个盘的移动情况推出来:(1,1,1)->(2,1,1)->(3,1, ...
最新文章
- adc0832对光电二极管进行数据采集_实车采集的现场数据如何导入控制模型进行分析...
- 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
- 浏览器执行Python脚本
- SecureCRT登录本地cygwin。
- linux 怎么查内存大小,linux如何查内存大小
- 北洋降舰之鱼雷艇队 ZT
- 【Android】 使用AndServer框架在手机上搭建服务器
- 解决从k8s.gcr.io拉取镜像失败问题
- php公众号获取code,微信公众号获取code
- 实现一个直播视频app源码的邀请码功能
- CF514B Han Solo and Lazer Gun
- 创新之力迸发无限想象,联想创新开放日触见未来科技
- iOS 第三方分享、支付原生平台集成
- GoLang 单元测试打桩和 mock
- oracle让时间范围走索引,怎样让日期范围走索引?
- Nginx 出现 403 Forbidden 的解决办法
- CDR插件开发之CPG插件002 - CPG插件开发环境准备和搭建
- 计算机电子专业好的学校6,中国最好的计算机专业学校
- Proxmox VE 6.0管理指南——8. Proxmox VE存储
- PHP使用POP3协议类收取邮件