在VS上可以正确输出 但ACM网站上会显示Time Limited Exceed

原问题

img

img


源代码
#include
#include<math.h>
using namespace std;
#define P 100
int main()
{
int N, M;
int item;
long sum[P];
int j = 0;
int count;
while(cin>>M)
{
if (M < 0)
break;
cin >> N;
if (N > pow(2,31))
break;
j++;
sum[j] = 0;
for (int i = 1; i <= N; i++)
{
item = M / i;
sum[j] += item;
}
count = j;
}
if (j > 0)
{
for (j = 1; j <= count; j++)
cout << sum[j] << endl;
}
return 0;
}

超时了。

#include <iostream>
#include<math.h>
using namespace std;
//#define P 100
int main()
{
    int N, M;
    //int item;
    long sum;    //long sum[P];
    
    //int j = 0;
    //int count=0;
    int max=(int)pow(2,31); //pow只算一次
    int i;
    while(cin>>M)
    {
        if (M < 0)
            break;
        cin >> N;
        if (N > max)
            break;

        sum=0;//sum[count] = 0;
        for (i = 1; i <= N; i++)
        {
            //item = M / i;
            sum+= M / i;//sum[count] += item;
        }
        //count++;
        //cout << sum[count] << endl;
        cout << sum << endl;
    }
    // if (count > 0)
    // {
    //     for (i = 0; i < count; i++)
    //         cout << sum[i] << endl;
    // }
    return 0;
}