在baihacker的专栏看到他计算金山招聘题目:编程计算从1到2008080808之间的整数有多少个含有数字7的帖子,用到了模板元。忽然想到可以用用模板元计算一个整数中含有多少个数字n。程序如下。
#include <iostream>
using namespace std;
const int Num=8;
const int x=2008080808;
const int y=77777777;
const int z=73928317;
template<long N>
struct Check
{
enum{result=(N%10==Num)};
};
template<long N>
struct Count
{
enum{result=Check<N>::result+Count<N/10>::result};
};
template<>
struct Count<0>
{
enum{result=0};
};
void main(void)
{
cout<<x<<" has "<<Count<x>::result<<endl;
cout<<y<<" has "<<Count<y>::result<<endl;
cout<<z<<" has "<<Count<z>::result<<endl;
}
本文展示了如何使用模板元计算一个整数中含有特定数字的个数,以数字7为例,通过代码实现并计算从1到2008080808之间的整数中有多少个含有数字7。

被折叠的 条评论
为什么被折叠?



