题目:已知公式,求数列,给定了最大数的范围
注意: 超越类型的最大范围会出现超时
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sstream>
#include<cstdio>
#include<iostream>
#include<math.h>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
int func(long n,int l){
int i = 1;
while(1) {
if(n == 1 || n > l) break;
if(n % 2 == 1) {
n = 3 * n + 1;
if(n > l) break;
i++;
}
if(n % 2 == 0) {
n /= 2;
if(n > l) break;
i++;
}
}
return i;
}
int main(){
int b;
long a;
int m = 1;
while(scanf("%ld %d",&a,&b)) {//1️⃣如果用int类型的a会发生超时
if((a == -1) && (a == b)) break;
int temp = func(a, b);
printf("Case %d: A = %ld, limit = %d, number of terms = %d\n",m++,a,b,temp);
}
return 0;
}
本文介绍了一个基于特定数学公式的数列求解算法实现。该算法通过递归运算来计算给定初始值和限制条件下的数列项数,并讨论了使用不同数据类型以避免超时的问题。
864

被折叠的 条评论
为什么被折叠?



