1 条题解

  • 0
    @ 2024-12-24 9:49:41

    C :

    #include<stdio.h>
    
    int main()
    {
        int a, b, t;
        while(scanf("%d%d", &a, &b) != EOF){
           int sum = 0;
           for(int i = a; i <= b; i++){
           t = i;
           int count = 0 ;
           while(t){
             if((t % 10 != 4 ) && (t % 10 != 7)) count++;
             t = t / 10;
           }
           if(count < 2) sum++;
           }
           printf("%d\n", sum);
        }
        return 0;
    }
    
    

    C++ :

    #include <cstring>
    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <vector>
    #include <cstdio>
    #include <map>
    using namespace std;
    vector<int>v;
    int vis[10];
    bool is_ok(int n){
        memset(vis,0,sizeof(vis));
        while(n){
            vis[n%10]++;
            n/=10;
        }
        int ans=0;
        for(int i=0;i<=9;i++){
            if(i==4 || i==7)
                continue;
            else
                ans+=vis[i];
        }
        if(ans>1)
            return false;
        return true;
    }
    int main()
    {
        v.clear();
        for(int i=0;i<=1000000;i++){
            if(is_ok(i))
                v.push_back(i);
        }
        int a,b;
        while(cin>>a>>b){
            if(a>b)
                swap(a,b);
            while(!is_ok(a))
                a++;
            while(!is_ok(b))
                b--;
            cout<<lower_bound(v.begin(),v.end(),b)-
            lower_bound(v.begin(),v.end(),a)+1<<endl;
        }
        return 0;
    }
    
    

    Java :

    import java.io.*;
    import java.math.*;
    import java.util.*;
    
    public class Main {
    	static long a, b, tmp;
    	static int cnt;
    
    	static void dfs(long n, boolean has) {
    		if (n > a)
    			return;
    		if (n >= b && n <= a)
    			cnt++;
    		dfs(n * 10 + 4, has);
    		dfs(n * 10 + 7, has);
    		if (has)
    			for (int i = (n == 0 ? 1 : 0); i <= 9; i++) {
    				if (i == 4 || i == 7)
    					continue;
    				dfs(n * 10 + i, false);
    			}
    	}
    
    	public static void main(String[] args) {
    		InputReader cin = new InputReader(System.in);
    		OutputWriter out = new OutputWriter(System.out);
    		while (cin.hasNext()) {
    			a = cin.nextLong();
    			b = cin.nextLong();
    			if (a < b) {
    				tmp = a;
    				a = b;
    				b = tmp;
    			}
    			cnt = 0;
    			dfs(0, true);
    			out.println(cnt);
    		}
          	out.close();
    	}
    }
    
    class InputReader {
    	private boolean finished = false;
    
    	private InputStream stream;
    	private byte[] buf = new byte[1024];
    	private int curChar;
    	private int numChars;
    	private SpaceCharFilter filter;
    
    	public InputReader(InputStream stream) {
    		this.stream = stream;
    	}
    
    	public int read() {
    		if (numChars == -1)
    			throw new InputMismatchException();
    		if (curChar >= numChars) {
    			curChar = 0;
    			try {
    				numChars = stream.read(buf);
    			} catch (IOException e) {
    				throw new InputMismatchException();
    			}
    			if (numChars <= 0)
    				return -1;
    		}
    		return buf[curChar++];
    	}
    
    	public int peek() {
    		if (numChars == -1)
    			return -1;
    		if (curChar >= numChars) {
    			curChar = 0;
    			try {
    				numChars = stream.read(buf);
    			} catch (IOException e) {
    				return -1;
    			}
    			if (numChars <= 0)
    				return -1;
    		}
    		return buf[curChar];
    	}
    
    	public int nextInt() {
    		int c = read();
    		while (isSpaceChar(c))
    			c = read();
    		int sgn = 1;
    		if (c == '-') {
    			sgn = -1;
    			c = read();
    		}
    		int res = 0;
    		do {
    			if (c < '0' || c > '9')
    				throw new InputMismatchException();
    			res *= 10;
    			res += c - '0';
    			c = read();
    		} while (!isSpaceChar(c));
    		return res * sgn;
    	}
    
    	public long nextLong() {
    		int c = read();
    		while (isSpaceChar(c))
    			c = read();
    		int sgn = 1;
    		if (c == '-') {
    			sgn = -1;
    			c = read();
    		}
    		long res = 0;
    		do {
    			if (c < '0' || c > '9')
    				throw new InputMismatchException();
    			res *= 10;
    			res += c - '0';
    			c = read();
    		} while (!isSpaceChar(c));
    		return res * sgn;
    	}
    
    	public String nextString() {
    		int c = read();
    		while (isSpaceChar(c))
    			c = read();
    		StringBuilder res = new StringBuilder();
    		do {
    			res.appendCodePoint(c);
    			c = read();
    		} while (!isSpaceChar(c));
    		return res.toString();
    	}
    
    	public boolean isSpaceChar(int c) {
    		if (filter != null)
    			return filter.isSpaceChar(c);
    		return isWhitespace(c);
    	}
    
    	public static boolean isWhitespace(int c) {
    		return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
    	}
    
    	private String readLine0() {
    		StringBuilder buf = new StringBuilder();
    		int c = read();
    		while (c != '\n' && c != -1) {
    			if (c != '\r')
    				buf.appendCodePoint(c);
    			c = read();
    		}
    		return buf.toString();
    	}
    
    	public String nextLine() {
    		String s = readLine0();
    		while (s.trim().length() == 0)
    			s = readLine0();
    		return s;
    	}
    
    	public String nextLine(boolean ignoreEmptyLines) {
    		if (ignoreEmptyLines)
    			return nextLine();
    		else
    			return readLine0();
    	}
    
    	public BigInteger nextBigInteger() {
    		try {
    			return new BigInteger(nextString());
    		} catch (NumberFormatException e) {
    			throw new InputMismatchException();
    		}
    	}
    
    	public char nextCharacter() {
    		int c = read();
    		while (isSpaceChar(c))
    			c = read();
    		return (char) c;
    	}
    
    	public double nextDouble() {
    		int c = read();
    		while (isSpaceChar(c))
    			c = read();
    		int sgn = 1;
    		if (c == '-') {
    			sgn = -1;
    			c = read();
    		}
    		double res = 0;
    		while (!isSpaceChar(c) && c != '.') {
    			if (c == 'e' || c == 'E')
    				return res * Math.pow(10, nextInt());
    			if (c < '0' || c > '9')
    				throw new InputMismatchException();
    			res *= 10;
    			res += c - '0';
    			c = read();
    		}
    		if (c == '.') {
    			c = read();
    			double m = 1;
    			while (!isSpaceChar(c)) {
    				if (c == 'e' || c == 'E')
    					return res * Math.pow(10, nextInt());
    				if (c < '0' || c > '9')
    					throw new InputMismatchException();
    				m /= 10;
    				res += (c - '0') * m;
    				c = read();
    			}
    		}
    		return res * sgn;
    	}
    
    	public boolean isExhausted() {
    		int value;
    		while (isSpaceChar(value = peek()) && value != -1)
    			read();
    		return value == -1;
    	}
    
    	public boolean hasNext() {
    		return !isExhausted();
    	}
    
    	public String next() {
    		return nextString();
    	}
    
    	public SpaceCharFilter getFilter() {
    		return filter;
    	}
    
    	public void setFilter(SpaceCharFilter filter) {
    		this.filter = filter;
    	}
    
    	public interface SpaceCharFilter {
    		public boolean isSpaceChar(int ch);
    	}
    }
    
    class OutputWriter {
    	private final PrintWriter writer;
    
    	public OutputWriter(OutputStream outputStream) {
    		writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
    				outputStream)));
    	}
    
    	public OutputWriter(Writer writer) {
    		this.writer = new PrintWriter(writer);
    	}
    
    	public void print(Object... objects) {
    		for (int i = 0; i < objects.length; i++) {
    			if (i != 0)
    				writer.print(' ');
    			writer.print(objects[i]);
    		}
    	}
    
    	public void print(int[] array) {
    		for (int i = 0; i < array.length; i++) {
    			if (i != 0)
    				writer.print(' ');
    			writer.print(array[i]);
    		}
    	}
    
    	public void print(long[] array) {
    		for (int i = 0; i < array.length; i++) {
    			if (i != 0)
    				writer.print(' ');
    			writer.print(array[i]);
    		}
    	}
    
    	public void printLine(int[] array) {
    		print(array);
    		writer.println();
    	}
    
    	public void printLine(long[] array) {
    		print(array);
    		writer.println();
    	}
    
    	public void printLine() {
    		writer.println();
    	}
    
    	public void printLine(Object... objects) {
    		print(objects);
    		writer.println();
    	}
    
    	public void print(char i) {
    		writer.print(i);
    	}
    
    	public void printLine(char[] array) {
    		writer.println(array);
    	}
    
    	public void printFormat(String format, Object... objects) {
    		writer.printf(format, objects);
    	}
    
    	public void println(Object... objects) {
    		print(objects);
    		writer.println();
    	}
    
    	public void println() {
    		writer.println();
    	}
    
    	public void printf(String format, Object... args) {
    		writer.printf(format, args);
    	}
    
    	public void close() {
    		writer.close();
    	}
    
    	public void flush() {
    		writer.flush();
    	}
    }
    
    
    • 1

    信息

    ID
    1002
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者