51nod 1770 数数字 找规律,注意进位,时间复杂度O(n)
2017-10-20 21:25
323 查看
题目:
这题很简单,找规律即可。
考虑两次进位:
1.a*b时的进位。
2.aa*b时加法时进位。
代码:
这题很简单,找规律即可。
考虑两次进位:
1.a*b时的进位。
2.aa*b时加法时进位。
代码:
#include <bits\stdc++.h> using namespace std; int num[10]; int main(){ int a,b,d,n,t; cin >> t; while(t--){ cin >> a >> b >> d >> n; memset(num,0,sizeof(num)); if(n <= 5){ int t = n; int s = 0; while(t--){ s = s*10 + a; } s *= b; do{ num[s%10]++; s /= 10; } while(s != 0); }else{ int t = 3; int s = 0; while(t--){ s = s*10 + a; } s *= b; int ge = s%10; int shi = s/10%10; int bai = s/100%10; int qian = s/1000%10; if(qian != 0){ num[qian]++; } num[ge]++; num[shi]++; num[bai] += n-2; } cout << num[d] << endl; } return 0; }
相关文章推荐
- 51nod 1770 数数字(规律)
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 51nod 1770数数字(找规律)
- 输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。 时间复杂度O(N) 空间复杂度O(N)
- 51Nod-1770-数数字
- 在有序数组中查找两个数,使得它们的和正好是输入的那个数字。时间复杂度O(n)
- 有一个二维数组.----杨氏矩阵 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 一个整型数组里除了一个数字之外,其他的数字都出现了两次。要求时间复杂度是O(n),空间复杂度是O(1),如何找出数组中只出现一次的数字
- 从数组中任意取出2个数,判断他们的和是否为输入的数字sum,时间复杂度为0(n^2),空间复杂度0(1)
- 找出一个数组中出现次数超过一半的那个数字,要求时间复杂度O(n)和空间复杂度为O(1)。
- 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,
- 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所 有偶数位于数组的后半部分。要求时间复杂度为O(n)。
- 51nod 1451 合法三角形 判斜率去重,时间复杂度O(n^2)
- 判断一个整数数组中是否有重复数字出现的O(n)时间复杂度算法
- 一个整型数组里除了一个或者两个或者三个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)
- 有 n 个无序整数( n>10000), 则找出其中最大的 M 个数字( 5<M<10), 所需要的最小时间复杂度为:
- 数组中只出现一次的数字,时间复杂度O(n),空间复杂度O(1)的解法
- 51nod 1170 1770 数数字(数学技巧)
- 51nod 1402 最大值 3级算法题 排序后修改限制点 时间复杂度O(m^2)
- 一个整型数组里除了一个或者两个或者三个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)