uva371 Ackermann Functions
来源:互联网 发布:安全加密软件 编辑:程序博客网 时间:2024/05/01 22:07
题目: 给你一个公式循环产生数列,指导产生1为止,输出最大的数的位置和数值
注意: 与之前题目的输出是不同的!!!(突然想骂人aaaaaaaa)这次不用考虑输出大小问题
map有自动排序的功能。但因为对map不熟悉(黑脸aaaaaaaaaaa)走了两小时弯路
#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 namespacestd;
long func(long n){
int h =1;
while(1) {
if(n %2 == 1) {
h++;
n = 3 * n +1;
}
if(n %2 == 0) {
h++;
n /= 2;
}
if(n ==1) break;
}
return h;
}
int main(){
long a,b;
map<long,long >num;
map<long,long >::iterator it;
// vector<int> d;
while((cin>> a >> b)&&(a+b)) {
// int flag = 1;
if(a > b){
long temp = a;
a = b;
b = temp;
// flag=0;
}
for(long i = a; i <= b; i ++) {
long tmep =func(i);
it = num.find(tmep); 1️⃣map中find函数找的是num【】括号里的。且find的返回对象是iterator
if( it != num.end()){
}
else num[tmep] = i;
}
it = num.end();
it--; 2️⃣不知道为什么it只能自增或自减。不能用+1或-1
// if(flag == 1)
printf("Between %ld and %ld, %ld generates the longest sequence of %ld values.\n",a,b,it->second,(it->first)-1 );3️⃣直接用num.end()->first会报错
num.clear();
}//end-while
return0;
}
- uva371 Ackermann Functions
- UVa 371 - Ackermann Functions
- UVa 371 Ackermann Functions (water ver.)
- Ackermann function
- Ackermann数
- Ackermann函数
- Ackermann函数
- FOJ 1042 Ackermann Function
- FZU 1042 Ackermann Function
- 强大的ackermann函数
- bjfu1025 Ackermann函数
- [SICP][1.10]Ackermann函数
- functions
- functions
- Functions
- Functions
- Functions
- Functions
- VS2010-MFC下在状态栏中添加进度条用于显示当前文件的读取进度
- ubuntu中ssh-server的安装与开机启动
- POJ 3061 Subsequence【尺取法】
- unity 下载纹理,并设置成指定的尺寸
- ESP8266的SDK开发入门教程
- uva371 Ackermann Functions
- Activity的生命周期和启动模式
- LTE (5G)是如何更块的
- 关于C的小程序-2
- bzoj 2820: YY的GCD (反演)
- HDU
- css的几种选择器
- SQL Server 2014远程访问,无法连接问题。
- 蓝桥杯 瓷砖铺放(dfs)