XTU OJ 1210 Happy Number (violence + playing table)

Source: Internet
Author: User

Problem Description

Recently, Mr Xie learn the concept of happy number. A happy number is a number contain all digit 7 or as 1 digit other than 7. For example, 777 are 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 is not happy number. Now Mr. Xie want to know for a given integer n, how many number among [1,n] is happy numbers, but counting them one by E is slow can I help him?

Input

First line an integer t indicate there is T testcases (1≤t≤100). Then T-lines follow, each line an integer n (1≤n≤106, n don ' t has leading zero).

Output

Output Case number First and then the answer.

Sample Input
517172030
Sample Output
Case 1:1case 2:7case 3:10case 4:10case 5:11

when the game saw this problem, see this sentence counting them one by one is slow, think that violence may time out, then did not go to that aspect to think about, and then did not have the topic to do, concentrate on this problem, with violence + dozen watch to try on. When the game is still to dare to try Ah, only to have ideas to achieve, even if the idea is wrong, we have to dare to try! There will be progress only if there is constant exploration;The idea of this problem is to play the table, because the amount of data is not too large, playing table or can do out; The following is the AC code;
#include "stdio.h" #include "string.h" const int maxn=1000000+10;int a[maxn];void init ()//Hit table enumeration {int i;        for (i=0;i<=9;i++)///here today to do the card here, the value of I set to 1, and then check this error for a long time, the last look at the data a few, only to find here is wrong; {//There is a last 0 case not considered         A[i]=1; A[i*10+7]=1;        Two-bit case a[7*10+i]=1;        a[i*100+7*10+7]=1;//three-bit a[7*100+i*10+7]=1;        A[7*100+7*10+i]=1;        a[i*1000+7*100+7*10+7]=1;//four-bit a[7*1000+i*100+7*10+7]=1;        A[7*1000+7*100+i*10+7]=1;        A[7*1000+7*100+7*10+i]=1;        A[i*10000+7*1000+7*100+7*10+7]=1;        A[7*10000+i*1000+7*100+7*10+7]=1;        A[7*10000+7*1000+i*100+7*10+7]=1;        A[7*10000+7*1000+7*100+i*10+7]=1;        A[7*10000+7*1000+7*100+7*10+i]=1;        A[i*100000+7*10000+7*1000+7*100+7*10+7]=1;        A[7*100000+i*10000+7*1000+7*100+7*10+7]=1;        A[7*100000+7*10000+i*1000+7*100+7*10+7]=1;        A[7*100000+7*10000+7*1000+i*100+7*10+7]=1;        A[7*100000+7*10000+7*1000+7*100+i*10+7]=1; a[7*100000+7*10000+7*1000+7*100+7*10+i]=1;    }}int Main () {memset (a,0,sizeof (a));    Init ();    int t,i,count,n,j;    scanf ("%d", &t);       for (i=1;i<=t;i++) {count=0;       scanf ("%d", &n);       for (j=1;j<=n;j++) {if (a[j]==1) count++;       } printf ("Case%d:", i);    printf ("%d\n", count); } return 0;}

Another way of writing, feel less memory than the above;
#include <iostream> #include <vector> #include <cstdio>using namespace Std;int main () {//Freopen ("    A.txt "," R ", stdin);    int T, n, I, J; int p[200] = {1,2,3,4,5,6,7,8,9,17,27,37,47,57,67,70,71,72, 73,74,75,76,77,78,79,87,97,177,277,377,477,57 7, 677,707,717,727,737,747,757,767,770,771,772,773, 774,775,776,777,778,779,787,797,877, 977,1777,2777, 3777,4777,5777,6777,7077,7177,7277,7377,7477,7577,7677, 7707,7717,7727,77                   37,7747,7757,7767,7770,7771,7772,7773,7774, 7775,7776,7777,7778,7779,7787,7797,7877,7977,8777,9777,17777, 27777,37777,47777,57777,67777,70777,71777,72777,73777,74777,75777, 76777,77077,77177,77 277,77377,77477,77577,77677,77707,77717,77727, 77737,77747,77757,77767,77770,77771,77772,77773,77774,7777 5,77776, 77777,77778,77779,77787,77797,77877,77977,78777,79777,87777,97777, 177777,277777,377777,477777,577777,677777,707777,717777,727777,737777, 747777,757777,767777,770777,771777,7                   72777,773777,774777,775777,776777, 777077,777177,777277,777377,777477,777577,777677,777707,777717,777727, 777737,777747,777757,777767,777770,777771,777772,777773,777774,777775, 777776,777777,77    7778,777779,777787,777797,777877,777977,778777,779777, 787777,797777,877777,977777};    CIN >> T;        for (i = 1; I <= t; + + i) {cin >> n;        for (j = 0; P[j] <= n && J < 189; + + j);    printf ("Case%d:%d\n", i,j); } return 0;}



XTU OJ 1210 Happy Number (violence + playing table)

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.