首页 > 代码库 > 第六届湘潭市程序设计竞赛 -Happy Number
第六届湘潭市程序设计竞赛 -Happy Number
Happy Number | ||
Accepted : 110 | Submit : 263 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Problem DescriptionRecently, 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? InputFirst 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). OutputOutput case number first, then the answer. Sample Input5 1 7 17 20 30 Sample OutputCase 1: 1 Case 2: 7 Case 3: 10 Case 4: 10 Case 5: 11 |
开始不敢做,怕暴力超时,后来写了暴力,但是 调代码又出问题,日
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm> const int N = 1010; using namespace std; int l=0; int main() { int t,n; scanf("%d",&t); for(int i = 1;i<=t;i++) { int sum = 0,p = 0,pp = 0,ppp = 0,wz,mo; scanf("%d",&n); if(n<10) { printf("Case %d: %d\n",i,n); continue; } else if(n>=10) { wz = 0; int j; for( j = 10;j<=n;j++) { p = j; pp = 0,ppp = 0; wz = 0; while(p) { mo = p % 10; wz++; if(mo==7) pp++; else ppp++; if(ppp>=2) break; p /= 10; } if(ppp==1 && pp==wz-1) sum++; else if(ppp==0 && pp==wz) sum++; } sum += 9; printf("Case %d: %d\n",i,sum); } } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。