码迷,mamicode.com
首页 > 移动开发 > 详细

XTU Happy Number (预处理)

时间:2015-06-13 14:16:14      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

Happy Number

Accepted : 156   Submit : 371
Time Limit : 1000 MS   Memory Limit : 65536 KB

Problem Description

Recently, Mr. Xie learn the concept of happy number. A happy number is a number contain all digit 7 or only 1 digit other than 7. For example, 777 is a happy number because 777 contail all digit 7, 7177 and 87777 both happy number because only 1 digit other than 7. Whereas 887,799 9807,12345, all of them are not happy number. Now Mr. xie want to know for a given integer n, how many number among [1,n] are happy numbers, but counting them one by one is slow, can you help him?

Input

First line an integer t indicate there are t testcases(1≤t≤100). Then t lines follow, each line an integer n(1≤n≤106, n don‘t have leading zero).

Output

Output case number first, then the answer.

Sample Input

5
1
7
17
20
30

Sample Output

Case 1: 1
Case 2: 7
Case 3: 10
Case 4: 10
Case 5: 11


Source

daizhenyang




解析:直接打表即可。查找时用二分查找。



AC代码:

#include <bits/stdc++.h>
using namespace std;

vector<int> p;
void init(){
    for(int i=1; i<1000000; i++){
        int ans = 0, j = i;
        while(j){
            if(j % 10 != 7) ans ++;
            j /= 10;
        }
        if(ans <= 1) p.push_back(i);
    }
}

int main(){
    #ifdef sxk
        freopen("in.txt", "r", stdin);
    #endif // sxk

    init();
    int t, n;
    scanf("%d", &t);
    for(int i=1; i<=t; i++){
        scanf("%d", &n);
        printf("Case %d: %d\n", i, upper_bound(p.begin(), p.end(), n) - p.begin());     //二分查找
    }
    return 0;
}


XTU Happy Number (预处理)

标签:

原文地址:http://blog.csdn.net/u013446688/article/details/46482055

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!