题目:已知公式,求数列,给定了最大数的范围
注意: 超越类型的最大范围会出现超时
#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;
}