我想找到从源到目的地的最低跳数。我的输出是正确的,但是当给出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;
}
答案 0 :(得分:1)
您可以在没有count
循环的情况下计算while
变量,这似乎可以计算[j, k]
中有多少元素可以被h
整除(或等效地,是倍数) h
)。
为此,请使用以下事实:
低于或等于x
且可被k
整除的数字量由x / k
的整数部分给出,不计算0
。
如果f(x, k) = int(x / k)
,那么[j, k]
中h
可以被f(k, h) - f(j - 1, h)
整除的数字量由{{1}}给出。