这是我的程序我想知道是否有任何替代数学逻辑可以在3020秒到20132014期间生成结果?
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
long int *a,i,j,t;
int main()
{
//clrscr();
//printf("%ld",sizeof(long long int));
printf("\n Enter the number of terms: ");
scanf("%ld",&t);
a=(long int*)malloc(t*sizeof(long int));
*(a+0)=0;
printf("\na0=%5ld",*(a+0));
for(i=1;i<=t;i++) {
if(*(a+i-1)-i>0) {
for(j=0;j<i;j++) {
if(*(a+j)==*(a+i-1)-i)
goto Deepak;
}
*(a+i)=*(a+i-1)-i;
}
else
Deepak:
*(a+i)=*(a+i-1)+i;
printf("\na%ld= %5ld",i,*(a+i));
}
//printf("\na%ld= %5ld",i,*(a+i));
free(a);
getch();
return 0;
}
答案 0 :(得分:0)
由于您还没有告诉我们内存限制,缓冲区大约为200MB,因此直截了当 &#34;哑&#34;计算是可能的,并且在现代计算机上不需要接近30秒的任何东西。
String cron = "0 0 12 * * ? *";
CronExpression cronExpression = new CronExpression(cron);
Date date1 = cronExpression.getNextValidTimeAfter(new Date());
Date date2 = cronExpression.getNextValidTimeAfter(date1);
long diff = date2.getTime() - date1.getTime();
long days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
20132014号码的结果为76913715 您可以轻松更改循环条件以获取其他索引。
答案 1 :(得分:0)
当然它取决于你的机器,程序运行多长时间。我自己实现了序列并用它进行了测试:
#include <iostream>
#include <unordered_set>
auto print_recaman(long int n)
-> void {
auto known_values = std::unordered_set<long int>{};
known_values.reserve(n);
long int previous = 0;
long int i = 0;
for(; i < n; i++) {
std::cout << i << ": " << previous << '\n';
auto next = previous - n;
previous = (next <= 0 || known_values.count(next) > 0) ?
previous + n :
next;
}
std::cout << i << ": " << previous << std::endl;
}
auto main(int, char**) -> int {
print_recaman(20132014L);
}
我的笔记本电脑上的测试:
$ time ./a.out > /dev/null
real 0m3.945s
user 0m3.914s
sys 0m0.031s