如何改善这个程序的执行时间?

时间:2015-02-14 20:47:26

标签: c performance algorithm math runtime

我想找到从源到目的地的最低跳数。我的输出是正确的,但是当给出100000个条目时,我的程序的执行时间就像1.0015秒。但我需要在1秒的时间内完成该计划。我已经尝试了很多来减少执行时间,但却没有。任何人都可以帮助我在1秒内完成执行时间。

样本输入-1 10 2

样品输出-5

P.S-程序远程执行。输入的数量可以是< = 100000;

#include<stdio.h>
int main()
{
    unsigned int n, i, j, k, h,count=0,l=0;
    scanf("%u", &n);
    for (i=0;i<n;i++)
    {
        scanf("%u %u %u", &j, &k, &h);
        l=j;
        count = 0;
        while(l<=k)
        {
          if(l%h==0)
          {
            count=count+1;
          }
          l++;
        }
        printf("%u\n", count);
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您可以在没有count循环的情况下计算while变量,这似乎可以计算[j, k]中有多少元素可以被h整除(或等效地,是倍数) h)。

为此,请使用以下事实:

  1. 低于或等于x且可被k整除的数字量由x / k的整数部分给出,不计算0

  2. 如果f(x, k) = int(x / k),那么[j, k]h可以被f(k, h) - f(j - 1, h)整除的数字量由{{1}}给出。