3n+1问题 总是time limit exceeded如题.具体问题是,随便给一个数n,如果n是偶数,那么除以2,如果n是奇数,那么3*n+1,这么循环下去,直到达到1为止.当中经过的步骤数量称作cycle length,比如说,8->4->2->1,这
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 04:11:58
![3n+1问题 总是time limit exceeded如题.具体问题是,随便给一个数n,如果n是偶数,那么除以2,如果n是奇数,那么3*n+1,这么循环下去,直到达到1为止.当中经过的步骤数量称作cycle length,比如说,8->4->2->1,这](/uploads/image/z/7638810-42-0.jpg?t=3n%2B1%E9%97%AE%E9%A2%98+%E6%80%BB%E6%98%AFtime+limit+exceeded%E5%A6%82%E9%A2%98.%E5%85%B7%E4%BD%93%E9%97%AE%E9%A2%98%E6%98%AF%2C%E9%9A%8F%E4%BE%BF%E7%BB%99%E4%B8%80%E4%B8%AA%E6%95%B0n%2C%E5%A6%82%E6%9E%9Cn%E6%98%AF%E5%81%B6%E6%95%B0%2C%E9%82%A3%E4%B9%88%E9%99%A4%E4%BB%A52%2C%E5%A6%82%E6%9E%9Cn%E6%98%AF%E5%A5%87%E6%95%B0%2C%E9%82%A3%E4%B9%883%2An%2B1%2C%E8%BF%99%E4%B9%88%E5%BE%AA%E7%8E%AF%E4%B8%8B%E5%8E%BB%2C%E7%9B%B4%E5%88%B0%E8%BE%BE%E5%88%B01%E4%B8%BA%E6%AD%A2.%E5%BD%93%E4%B8%AD%E7%BB%8F%E8%BF%87%E7%9A%84%E6%AD%A5%E9%AA%A4%E6%95%B0%E9%87%8F%E7%A7%B0%E4%BD%9Ccycle+length%2C%E6%AF%94%E5%A6%82%E8%AF%B4%2C8-%3E4-%3E2-%3E1%2C%E8%BF%99)
3n+1问题 总是time limit exceeded如题.具体问题是,随便给一个数n,如果n是偶数,那么除以2,如果n是奇数,那么3*n+1,这么循环下去,直到达到1为止.当中经过的步骤数量称作cycle length,比如说,8->4->2->1,这
3n+1问题 总是time limit exceeded
如题.具体问题是,随便给一个数n,如果n是偶数,那么除以2,如果n是奇数,那么3*n+1,这么循环下去,直到达到1为止.当中经过的步骤数量称作cycle length,比如说,8->4->2->1,这个的cycle length就是4.
现在随便给两个数 i 和 j,要求出 i 与 j 当中所有数(包括 i 和 j )的最大的cycle length,然后print出来.例子如下,
Sample Input
1 10
100 200
201 210
900 1000
Sample Output
1 10 20
100 200 125
201 210 89
900 1000 174
我在我自己的电脑上test我的代码,test包括最极端的情况,input是1 999999的情况,运行时间绝对不到1秒.时间要求是3秒以下,但是为什么每次我提交给uvaonlinejudge,它总说我time limit exceeded?
我的代码如下:
#include
#include
#include
#include
#include
#include
using namespace std;
vector array(1000000);
int getcycle(int x)
{
int count=0;
int orgin=x;
while (x = 1) {
if ((x < 1000000) && (array[x] = NULL)) {
count += array[x];
break;
}
else {
float temp = (float)x/2;
float diff = temp - floor(temp);
if (diff==0) {
\x05count++;
\x05x = x/2;
}
else {
\x05count++;
\x05x = 3*x + 1;
}
}
}
array[orgin]=count;
return count;
}
int findmax(int x,int y)
{
int max=0;
int bigger;
int smaller;
if (x
3n+1问题 总是time limit exceeded如题.具体问题是,随便给一个数n,如果n是偶数,那么除以2,如果n是奇数,那么3*n+1,这么循环下去,直到达到1为止.当中经过的步骤数量称作cycle length,比如说,8->4->2->1,这
#include
int main(void){
int i,j;
while (scanf("%d%d",&i,&j)!=EOF){
int a,b,max=0;
i