湘潭邀请赛——Welcome to XTCPC

来源:互联网 发布:剑三好友招募积分算法 编辑:程序博客网 时间:2024/05/01 01:10

Happy Number

Accepted : 118 Submit : 303Time 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

517172030

Sample Output

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

题意:所谓欢乐数,就是指一个数所有的位数全部都是7,或是只有一个位上的数不是7。计算从1到n欢乐数的个数,需要注意的是若只有1位,则不管是不是7,
      都是欢乐数。
      开始想找规律,想来想去,还不如暴力简单,毕竟最大只有7位数,那就暴力吧!!暴力万岁!!!!!
#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>using namespace std;int main(){    int n,i,t,k,m,sum;    scanf("%d",&t);    for(m=1; m<=t; m++)    {        sum=9;        scanf("%d",&n);        if(n<10)           {                printf("Case %d :%d\n",m,n);                continue;           }            for(k=10; k<=n; k++)            {                int j=k,p = 0,t1 = 0,w = 0,x;                while (j)                {                    x = j%10;                    j=j/10;                    t1++;                    if(x==7)                        p++;                    else w++;                    if(w>=2)                        break;                }                if(p==t1||p==t1-1)                    sum++;            }            printf("Case %d: %d\n",m,sum);    }    return 0;}


0 0
原创粉丝点击