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; }
时间: 2024-11-05 20:29:02