第一次尝试在CSDN上写博客
题目描述【年轻人要讲武德】数学老师上课提问:“楚小七,老师问你4+1等于多少呀?”
楚小七:“等于6-1”
老师一脸懵逼,并问“你为什么这样回答呀?”
楚小七:“因为年轻人不讲5的(武德)”
我们作为优秀的大学生,肯定不能像楚小七一样不讲5的(武德)
现在,马大师希望你能帮他写一个程序,数清楚在n以内,到底有几个包含5的数
就是找出1到n的所有含5的数,这个数可以是‘5’,也可以是‘51’
第一行输入一个正整数T,代表测试用例的组数
接下来T行,每行输入一个正整数n
1<=T<=1000,1<=n<=10000000
共T行
每行输出在n以内共有几个包含5的数
#includeusing namespace std; #define Maxn 10000005 int num5[Maxn]; bool have5(int x){ while(x!=0){ if ((x%10)==5) return true; //判断个位是否为5 x/=10; //退掉个位 如果是51 那此时继续循环下一轮 } return false; } void Jisuan(){ num5[0]=0; for (int i=1;i > t; Jisuan(); //开头直接算好 for (int i=0;i > n; cout << num5[n] << endl; } }
AC,时间和内存有点略高
题目:http://www.52ac.net/user/contestProblem?p_id=8&c_id=2774



