您的位置:首页 > 其它

UVA100

2016-03-10 12:39 183 查看
vim粘贴到系统剪贴板, ubuntu apt-get install vim,这样安装的版本vim-base没有+寄存器(“+y),卸载,重装

vim全选复制:ggVG(gg回到首行首列,V行选中模式,G定位文档末尾)

cpp代码

#include <iostream>
#include <map>
using namespace std;
map<long long, long long> coll;

long loopLength(const long long* right){
long length = 1;
long long current = *right;
while(current > 1){
if(current % 2 == 0){
current /= 2;
}
else{
current = current * 3 + 1;
}
length++;
}
return length;
}

long loopLength_speedup(const long long* right){
long long length = 0;
map<long long, long long>::iterator it = coll.find(*right);
if(it == coll.end()){
length = loopLength(right);
coll[*right] = length;
}
else{
length = it->second;
}
return length;
}

int maxLength(const long long* left, const long long* right){
long long min = *left < *right ? *left : *right;
long long max = *left > *right ? *left : *right;

long long current = min;
int maxLength = 0;
while(current <= max){
int length = loopLength_speedup(¤t);
maxLength = length > maxLength ? length : maxLength;
current++;
}
return maxLength;
}

int main(){
long long left, right;
while(cin >> left >> right){
cout << left << " " << right << " " << maxLength(&left, &right) << endl;
}
return 0;
}


代码中的 loopLength_speedup() 用来查找之前已经计算过的数字,如果之前计算过,就不用再计算,直接从map里面取结果就好了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: