其目标是将所有斐波那契数字打印到第93位
#include<stdio.h>
void main(){
unsigned long long first=0,second=1,sum;
printf("%llu,%llu",first,second);
unsigned char hops=1;
while (hops<93) {
sum=first+second;
printf(",%llu",sum);
first=second;
second=sum;
hops++;
}
printf("\n");
}
答案 0 :(得分:3)
当然,你可以。只需打印预先计算的数字串。
#include <stdio.h>
int main()
{
puts("0,1,1,2,3,5,...");
return 0;
}
答案 1 :(得分:2)
如果您需要优化整个操作,您需要考虑空间和时间复杂性。从这一点开始,你可以想到它们会有多好。
现在打印n
数字将需要一个具有时间复杂度O(n)
的迭代。有没有更好的方法呢?问题是,如果你多次这样做,你可以通过将其存储在某处来摆脱添加。但是,这不会给你提供更好的阿斯莫特时间复杂度改进 - 相反,你将面临O(n)
空间复杂性 - 如果打印只是你做的事情,这将是一个过头。 (并且必须进行预先计算)。
所以是的,这个解决方案足以实现你想要做的事情。
如果您需要扫描某些输入 - 那么我会要求您使用getchar
获取输入,然后从中形成数字(如果需要)。如果您在SPOJ或竞争性编程判断服务器中考虑这一点,这些往往会提供更好的结果。 (在大量输入案例中,时间再次小于scanf
的时间 - 10 ^ 7等。