51nod 1770 数数字【模拟+思维】
来源:互联网 发布:人工智能最好的大学 编辑:程序博客网 时间:2024/05/24 15:36
统计一下
样例解释:
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
思路:
1、通过手动模拟几组小数据发现(好像不用手动模拟也能知道.....)当很多很多个a*b的时候,之后会无限循环一个数.
那么我们分类讨论:
①没有进位的时候,那么a*b==d,输出n,否则输出0.
②有进位的时候,我们模拟乘法过程,直到重复出现一个数字的时候,对应在这个数字上加剩余长度。注意最高位可能和这个重复的数字不同。
Ac代码:
#include<stdio.h>#include<string.h>using namespace std;#define ll __int64int a,b,d,n;int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d%d%d",&a,&b,&d,&n); if((a*b)/10==0) { if((a*b)==d)printf("%d\n",n); else printf("0\n"); } else { int pre=a*b/10; int now=a*b%10; int ans[10]; memset(ans,0,sizeof(ans)); ans[now]++; n--; while(n) { now=(a*b+pre)%10; pre=(a*b+pre)/10; if(ans[now]) { ans[now]+=n; break; } else { ans[now]++; } n--; } ans[pre]++; printf("%d\n",ans[d]); } }}
0 0
- 51nod 1770 数数字【模拟+思维】
- 51 nod 1770 数数字 乘法模拟
- 数数字(51nod 1770)
- 51nod 1770 数数字
- 51nod-【1770 数数字】
- 51nod--1770数数字
- 1770 数数字 51NOD
- 【51Nod】1770 数数字
- 51nod 1770 数数字
- 51nod--1770数数字
- 51nod 1770 数数字
- 51nod 1770 数数字
- nod-1770-数数字
- 51 nod 数数字
- 51 nod 数数字
- 51Nod-1770-数数字
- 51NOD 1770 数数字 循环节
- 51nod 1770 数数字(规律)
- 通向架构师的道路(第十一天)之Axis2 Web Service(二)
- 第二天 Css 和JavaScript
- JAVA进行XML解析
- IOI 花店橱窗布置
- dedecms基本概念和操作
- 51nod 1770 数数字【模拟+思维】
- C# winform中读写ini文件
- 【Tomcat】tomcat简单介绍,安装以及启动(一)
- 和君第一次演讲
- 【ARM-Linux开发】gstreamer教程及在DM3730上的应用
- 通向架构师的道路(第十二天)之Axis2 Web Service(三)
- mysql5.6 varchar长度不同的情况下group by的效率
- String对象的声明和String对象的常用方法
- c#学习笔记对IEnumerable<T>,IDictionary<Tkey,TValue>,ICollection<T>,IList<T>的总结