15-幸运数组4、7

/* 题目内容:

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;
}

时间: 2024-10-15 18:16:02

15-幸运数组4、7的相关文章

第三部分 基本类型:第15章 数组

派生关系:System.Object => System.Array => 数组 数组是引用类型,是在托管堆上进行分配的. Int32[] myIntegers; //声明了一个数组引用,初始设置为null myIntegers = new Int32[100]; //创建了含有100个Int32的数组,初始化为0.该数组的内存块地址被返回并保存到myIntegers变量中 创建引用类型数组: Control[] myControls; //声明一个数组引用 myControls = new

15.swift数组的相关信息

/********************** 数组定义 **************************/ // 数组:Array表示数据 // let修饰的标识符是不可变数组(元素确定后不能修改) // var修饰的标识符是可变数组(可以添加和删除元素) // 注意: // 1>定义数组是使用[],并且不需要加@ // 2>通常情况下数组是一个泛型集合,所有通常会指定数组中可以存放哪些元素 // 不可变数组写法一:定义一个数组,里面存放的都是字符串 let names : Array&

09.15,一维数组,冒泡排序

Console.Write("请输入人数:"); int n = int.Parse(Console.ReadLine()); int[] nianling = new int[n]; for (int i = 0; i < n; i++) { Console.Write("请输入第{0}个人的年龄:",i+1); nianling[i] = int.Parse(Console.ReadLine()); } //开始排序 for (int j = 0; j &

第十六课 数组的引入 【项目1-5】

第十六课 数组的引入 项目一 [数组大折腾] (1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行. [cpp] view plain copy print? int main( ) { int a[20]={...};  //初始化前10个元素 //键盘输入后10个元素的值 //由前往后输出数组中所有元素的值 printf("由前往后,数组中的值是:\n")

【bzoj1853】 Scoi2010—幸运数字

http://www.lydsy.com/JudgeOnline/problem.php?id=1853 (题目链接) 今天考试考了容斥,结果空知道结论却不会写= = 题意:求区间中不含6,8两个数字及由6,8组成的数字的倍数的的数有几个 Solution  容斥原理.  先把所有的幸运数字都蒯到一个数组里,将两两之间可以整除的数只留下一个小的.  接下来如果暴力组合统计答案的话肯定会TLE,因为就算去掉了可以被整除的数以后还是有1000多个幸运数组.我们考虑dfs,x记录当前已经枚举到了第几个

java基础之数组常用操作

常用的对数组进行的操作 1.求数组中最大值,最小值 思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大,则把这个值赋给max.最小值同样 1 public class TestArray{ 2 public static void main(String[] args){ 3 int[] arr={23,45,234,576,34,87,34,12,67}; 4 int max=arr[0]; 5 int min=arr[0]; 6 for(int i=

PHP数组内容不重复组合排列算法

最近在做ecshop的商品库存模块,分别给一款商品的多个属性组合设置库存,如下图: 一款手机有不同颜色,屏幕尺寸,系统和电量,都要设置不同的库存,如果都要手动选择属性组合,则会耗费很多不必要的时间.假如打开页面时就已经设置好属性排列组合那就最好不过,因此想了整天,写了如下函数: 1 <?php 2 3 /* 4 Author:GaZeon 5 Date:2016-6-20 6 Function:getArrSet 7 Param:$arrs 二维数组 8 getArrSet(array(arra

数组与数组列表

数组 数组代表一系列对象或者基本数据类型,所有相同的类型都封装到一起——采用一个统一的标识符名称.简单来讲,数组就是一组相关数据的集合,是一连串的变量.Java中数组的定义和使用时通过方括号索引运算符进行的({}),一般来说,有两种定义数组的方法,只需在类型名或标识符后跟一对方括号即可. int[] a1; int a1[]; 两种表示方法是完全一样的.此时只是声明了指向数组的一个对象,并未对其分配任何空间,为了创建数组相应的存储空间,就必须要写一个初始化表达式.如: int b = {1, 2

数组的定义及应用

数组:什么是数组?内存中连续存储同一类数据的一块空间. 类似于:豆角(一维). 分类:一维,二维,多维. 一维数组:定义:数据类型[] 数组名 = new 数据类型[数组长度]; int[] a = new int[10]; string[] b = new string[20]; 1 public static void Main(string[] args) 2 { 3 int[] a = new int[10]; 4 5 for (int i = 0; i < a.Length; i++)

JavaScript操作数组

数组被描述为一个存储元素的线性集合,元素可以通过索引来任意存取. 几乎所有的编程语言都有类似的数据结构,但是Javascript中的数组却略有不同. Javascript中的数组是一种特殊的对象,所以在数组的操作效率上不如其他语言中的数组高. 也因为数组再JavaScript中被当做对象,所以它有很多属性和方法可以再编程时使用. 下面就简单介绍一下JavaScript中的数组的使用方法. 注:以下所有的JavaScript代码均在 jsshell 中运行,一些方法可能在其他环境中(如浏览器和su