A - 你能数的清吗 51Nod - 1770(找规律)
A - 你能数的清吗 51Nod - 1770(找规律)
演演是个厉害的数学家,他最近又迷上了数字谜。。。。
他很好奇 xxx...xxx(n个x)*y 的答案中 有多少个z,x,y,z均为位数只有一位的整数。
大概解释一下:
22222*3 = 66666,里面有5个6。
Input 多组测试数据。 第一行有一个整数T,表示测试数据的数目。(1≤T≤5000)
接下来有T行,每一行表示一组测试数据,有4个整数x,y,z,n。 (1≤x,y≤9,0≤z≤9,1≤n≤10^9) Output
对于每一组数据,输出一个整数占一行,表示答案。 Sample Input 2 2 3 6 5 3 3 0 10 Sample Output
5 0
思路
- [ ] 题意:这一题给我们一个长度为n各个位数上的数均是x,然后让这个数与y相乘,得到一个多位数,问在这个多位数的位置上数等 z 等数量有多少个
- [ ] 思路
- 首先这一题的数据范围是 \(1 =< n<= 1e9\),所有所用的算法复杂度\(<=O(n)\)
- 规律1:对于\(x*y<10\),这个多位数上的每一个数都相同,直接比较x*y 与 z 的值就行了
- 规律2:(
在考虑这个规律之前,我们把所乘得到的多位数 分 开始部分、中间部分、结尾部分 三个字段) 对于\(x*y >=10\) ,这个时候 我们就要考虑到 进位 的问题了,但是我们发现,虽然这个 有进位问题但是 其中在这个中间部分仍然可能(对于n比较的大的时候)有一个连续子段,在这子段上各个位数上的数字都相同,而对与这个多位数的结尾部分一定只有一个数与中间部分的数不同 ,而在开始部分最多只包含3个数与中间连续部分呢的数一定不同,那么在这个规律的基础上解决 “进位” 所带来的麻烦情况,剩下的就是遍历去判断 z 是否与 “中间位置的那个相同的数”“开头最多超过三个数”“结尾的那个数”是否相同,因为中间部分的非常长的连续相同的字段,所以我们可以优化很多不必要的比较
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
inline void Read(int & x)
{
int ans = 0, f = 1;
char ch = getchar();
while(! isdigit(ch)) { if(ch == '-') f = -1; ch =getchar(); }
while(isdigit(ch)) { ans *= 10, ans += ch - '0'; ch = getchar(); }
x = ans * f;
}
inline int read()
{
char ch = getchar();
int x = 0, f = 1;
while(ch < '0' || ch > '9')
{
if(ch == '-') f = -1;
ch = getchar();
}
while('0' <= ch && ch <= '9')
{
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
int main()
{
/* freopen("A.txt","r",stdin); */
int x, y, z, n;
int t;
//scanf("%d", &t);
t = read();
while(t --)
{
//scanf("%d %d %d %d", &x, &y, &z, &n);
x = read(), y = read(), z = read(), n = read();
if(x * y < 10)
{
if(x*y == z)
printf("%d\n", n);
else
printf("0\n");
}
else
{
int jinzhi = x*y / 10;
int yushu = x*y % 10;
int a[10] = {0};
a[yushu] ++;
while(-- n)
{
yushu = (x*y + jinzhi) % 10;
jinzhi = (x*y + jinzhi) / 10;
if(a[yushu])
{
a[yushu] += n;
break;
}
else
{
a[yushu] ++;
}
}
a[jinzhi] ++;
printf("%d\n", a[z]);
}
}
return 0;
}
A - 你能数的清吗 51Nod - 1770(找规律)的更多相关文章
- A - 你能数的清吗 51Nod - 1770
题目: 演演是个厉害的数学家,他最近又迷上了数字谜.... 他很好奇 xxx...xxx(n个x)*y 的答案中 有多少个z,x,y,z均为位数只有一位的整数. 大概解释一下: 22222*3 = ...
- 51nod 1770 数数字
1770 数数字 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 难度:3级算法题 收藏 关注 统计一下 aaa ⋯ aaan个a × b 的结果里面 ...
- POJ2402 Palindrome Numbers第K个回文数——找规律
问题 给一个数k,给出第k个回文数 链接 题解 打表找规律,详见https://www.cnblogs.com/lfri/p/10459982.html,差别仅在于这里从1数起. AC代码 #inc ...
- [CQOI2014]数三角形 题解(找规律乱搞)
题面 其实这道题不用组合数!不用容斥! 只需要一个gcd和无脑找规律(滑稽 乍一看题目,如果单纯求合法三角形的话情况太多太复杂,我们可以从局部入手,最终扩展到整体. 首先考虑这样的情况: 类似地,我们 ...
- ACM学习历程—51NOD 1770数数字(循环节)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1770 这是这次BSG白山极客挑战赛的A题.由于数字全部相同,乘上b必然会 ...
- 51nod 1770 数数字 找规律,注意进位,时间复杂度O(n)
题目: 这题很简单,找规律即可. 考虑两次进位: 1.a*b时的进位. 2.aa*b时加法时进位. 代码: #include <bits\stdc++.h> using namespace ...
- 51nod 1463 找朋友(线段树+离线处理)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1463 题意: 思路: 好题! 先对所有查询进行离线处理,按照右区间排序, ...
- Codeforces 980 并查集/模拟贪心最小字典序 找规律/数去除完全平方因子 逆思维倍增预处理祖先标记点
A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...
- 2017"百度之星"程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】
度度熊保护村庄 Accepts: 13 Submissions: 488 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3276 ...
随机推荐
- 超详细,多图文介绍redis集群方式并搭建redis伪集群
超详细,多图文介绍redis集群方式并搭建redis伪集群 超多图文,对新手友好度极好.敲命令的过程中,难免会敲错,但为了截好一张合适的图,一旦出现一点问题,为了好的演示效果,就要从头开始敲.且看且珍 ...
- JavaScript实现树结构(一)
JavaScript实现树结构(一) 一.树结构简介 1.1.简单了解树结构 什么是树? 真实的树: 树的特点: 树一般都有一个根,连接着根的是树干: 树干会发生分叉,形成许多树枝,树枝会继续分化成更 ...
- DirectX11--深入理解Effects11、使用着色器反射机制(Shader Reflection)实现一个复杂Effects框架
前言 如果之前你是跟随本教程系列学习的话,应该能够初步了解Effects11(现FX11)的实现机制,并且可以编写一个简易的特效管理框架,但是随着特效种类的增多,要管理的着色器.资源等也随之变多.如果 ...
- sf-git机制
为什么要专门写一篇关于sf科技公司的GIT管理机制呢?因为本周经历了两天的学习和考试,刚开始没在意,因为之前公司也用的GIT,所以没怎么看视频,就看了文档,练习考试时候才发现并非以前的那种git流程, ...
- javax.email 发送邮件 javaEmail ,java 邮件
首先导入mail的jar包 然后代码如下 package aaa; import java.util.Date;import java.util.Properties; import javax.ma ...
- Python 【基础常识概念】
深浅拷贝 浅copy与deepcopy 浅copy: 不管多么复杂的数据结构,浅拷贝都只会copy一层 deepcopy : 深拷贝会完全复制原变量相关的所有数据,在内存中生成一套完全一样的内容,我们 ...
- 18 JpaRepository和JpaSpecificationExecutor
继承JpaRepository后的方法列表 JpaRepository findAll() List<T> findAll(Sort) List<T> findAll(Iter ...
- yolo3各部分代码详解(超详细)
0.摘要 最近一段时间在学习yolo3,看了很多博客,理解了一些理论知识,但是学起来还是有些吃力,之后看了源码,才有了更进一步的理解.在这里,我不在赘述网络方面的代码,网络方面的代码比较容易理解,下面 ...
- 如何分析SpringBoot源码模块及结构?--SpringBoot源码(二)
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一). 前面搭建好了自己本地的S ...
- 有了这套微信小程序x5调试,调试一些简单的开发者工具调试不了的功能不成问题!!!!
1.首先我们需要打开微信 TBS 调试 地址是:http://debugx5.qq.com 2.然后打开手机 打开开发者模式,打开 USB 调试 3.然后 在谷歌浏览器地址栏输入 chrome://i ...