bsp; cout<<5<<endl;
}
return 0;
}
上面的源程序能正确运行,也可以正确得到结果。但将其提交给POJ测评系统,不能“Accepted”,评测结果显示为“Memory Limit Exceeded”,主要是动态数组分配超出了内存限制。因此,不能采用数组的方式来保存1~N序列中数字2、3、5、7、9的相关情况。如果对于每组测试数据,都采用循环计算序列n-m+1~n之间各数字中质因子2、5的个数及末位为3、7、9的个数,可编写如下的程序2。
(3)评测结果显示为“Time Limit Exceeded”的源程序2。
#include<iostream>
using namespace std;
int main()
{
int i,t,n,m,cnt2,cnt5,cnt3,cnt7,cnt9;
int last[4][4] ={{6,2,4,8},{1,3,9,7},{1,7,9,3},{1,9,1,9}};
while (cin>>n>>m)
{
if (m == 0)
{
cout<<"1"<<endl;
continue;
}
cnt2=cnt3=cnt5=cnt7=cnt9=0;
for (i=n-m+1;i<=n;i++)
{
t=i;
while (t%2==0)
{
cnt2++;
t=t/2;
}
while (t%5==0)
{
cnt5++;
t=t/5;
}
if (t%10==3) cnt3++;
else if (t%10