/* 题目内容:
YF不爱名利,所以他既不喜欢6,也不喜欢8。他的幸运数字是4和7。如果一个数字中只包含4和7,他就认为这个数字是他的幸运数。
现在给你两个正整数a,b,要求返回a,b之间的幸运数的个数,包括a,b本身。
输入描述
第一行输入数目n,表示后面有n组ab
第2行开始,每行一组a b, 空格隔开。
输出描述
每行输出一个数,即a,b之间的幸运数的个数。
输入样例
3
11 20
4 7
1 10
输出样例
0
2
2
*/
#include <iostream>
using namespace std;
int lucky[10000005]; //注意大小,小了一直是 答案错误
void countlucky(){
for(int i = 1; i <= 10000000; i++){
int c, d, e, f, g, h, y = i;
int flag = 1;
if(y % 10 == 0)
flag = 0;
while(y % 10 && flag){
c = y % 10; y /= 10;
if(c != 4 && c != 7)
flag = 0;
}
if(flag && y == 0) // 101 y = 10
lucky[i] = 1;
// c = y % 10; y /= 10;
// d = y % 10; y /= 10;
// e = y % 10; y /= 10;
// f = y % 10; y /= 10;
// g = y % 10; y /= 10;
// h = y % 10; y /= 10;
// if(i < 10)
// lucky[4] = lucky[7] = 1;
// if(i < 100){
// if((c == 4 || c == 7) && (d == 4 || d == 7))
// lucky[i] = 1;
// }
// if(i < 1000 && (c == 4 || c == 7) && (d == 4 || d == 7) && (e == 4 || e == 7))
// lucky[i] = 1;
// if(i < 10000 && (c == 4 || c == 7) && (d == 4 || d == 7) && (e == 4 || e == 7) && (f == 4 || f == 7))
// lucky[i] = 1;
// if(i < 100000 && (c == 4 || c == 7) && (d == 4 || d == 7) && (e == 4 || e == 7) && (f == 4 || f == 7)
// && (g == 4 || g == 7))
// lucky[i] = 1;
// if(i < 100000 && (c == 4 || c == 7) && (d == 4 || d == 7) && (e == 4 || e == 7) && (f == 4 || f == 7)
// && (g == 4 || g == 7) && (h == 4 || h == 7))
// lucky[i] = 1;
lucky[i] += lucky[i - 1];
}
}
int main(){
ios::sync_with_stdio(false);
int n;
// cin >> n;
countlucky();
// while(n--){
int a, b;
cin >> a >> b;
cout << lucky[b] - lucky[a - 1] << endl;
// }
return 0;
}
15-幸运数组4、7
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:14-n皇后
下一篇:9-sort使用时的错误
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
3634、找出数组中的幸运数
在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。给你一个整数数组 arr,
java 算法 数据结构 数组 List