算法练习5:Common Denominators
来源:互联网 发布:印度最新人口数据2016 编辑:程序博客网 时间:2024/06/05 02:59
算法练习5
- max函数:
需要用
#include<algorithm>
格式:
max(a,b);//只能比较两个数
三个数的比较:
max(a,b>c?b:c);
- 计算三个数的最小公倍数:
思路是这样,假设三个数x,y,z 先拿x,y取最小公倍数n 再拿n和z取最小公倍数,得到结果 程序没有给出,不过只要你会写两个数的最小公倍数那部份的就可以了
算法比较:
unsigned long long Fracts::gcd(unsigned long long a, unsigned long long b){ return b == 0 ? a : gcd(b, a % b);//递归函数}unsigned long long Fracts::lcm(unsigned long long a, unsigned long long b){ return a * b / gcd(a, b);}
for循环:
在最新的C++中,支持for循环的5种用法,你可知道?
#include <algorithm> #include <vector> ////////////////////////////////////////////// int nArray[] = {0, 1, 2, 3, 4, 5}; std::vector<int> vecNum(nArray, nArray + 6); CString strText; // 第一种用法:最原始的语法(用下标) for (size_t i = 0; i < vecNum.size(); ++i) { strText.Format("%d", nArray[i]); AfxMessageBox(strText); } // 第二种用法:最原始的语法(用迭代器) for (auto it = vecNum.begin(); it != vecNum.end(); ++it) { strText.Format("%d", *it); AfxMessageBox(strText); } // 第三种用法:简化数组遍历语法(从vs2008开始支持) for each(auto item in vecNum) { strText.Format("%d", item); AfxMessageBox(strText); } // 第四种用法:STL函数 std::for_each(vecNum.begin(), vecNum.end(), [](int item){ CString strText; strText.Format("%d", item); AfxMessageBox(strText); }); // 第五种用法:C++11新增加的(VS2012支持) for(auto item : vecNum) { strText.Format("%d", item); AfxMessageBox(strText); }
- 完整代码::
#include<string>#include<iostream>#include<vector>#include<algorithm>using namespace std;class Fracts{public: static unsigned long long leaseCommonMultipleTwo(unsigned long long lst1,unsigned long long lst2 )//make the lease common multiple bewteen two numbers { unsigned long long multiple = lst1*lst2; unsigned long long tmp; unsigned long long l1=max(lst1,lst2); unsigned long long l2=min(lst1,lst2); while (l2) { tmp = l1%l2; l1 = l2; l2=tmp; cout << l2; //cout << l1; } return multiple / l1; }; static unsigned long long leaseCommonMultipleThree(std::vector<std::vector<unsigned long long>>&lst) { unsigned long long result = lst[0][1]; for (int i = 1; i < lst.size(); i++) { result= leaseCommonMultipleTwo(lst[i][1], result); } return result; } static std::string convertFrac(std::vector<std::vector<unsigned long long>> &lst) { std::string result=""; unsigned long long LCM=leaseCommonMultipleThree(lst); /*cout << leaseCommonMultiple(lst) << endl;*/ for (int i = 0; i < lst.size(); i++) { /*result += "(" ; result += std::to_string(LCM/lst[i][1]*lst[i][0]) ; result += ","; result += std::to_string(LCM); result += ")";*/ result = result + "(" + std::to_string(LCM / lst[i][1] * lst[i][0]) + "." + std::to_string(LCM) + ")"; /* cout << lst[i][0] * LCM/lst[i][1] << endl;*/ cout << result << endl; } return result; };}; int main(){ std::vector<std::vector<unsigned long long>> r1 = { { 69, 130 }, { 87, 1310 }, { 3, 4 }, {4,5} }; std::string ans1 = Fracts::convertFrac(r1); std::string sol1 = "(6,12)(4,12)(3,12)"; cout << "ans1=" << ans1 << endl; /*int tes = Fracts::leaseCommonMultiple(r1); cout << "tes=" << tes << endl;*/}
0 0
- 算法练习5:Common Denominators
- 算法练习(9):Longest Common Prefix
- poj 1458 小白算法练习 Common Subsequence 动态规划
- 【LeetCode算法练习(C++)】Longest Common Prefix
- 算法练习5
- 《算法导论》练习28.1-5
- 算法导论 练习 2.3-5
- 算法导论练习 3.2-5
- LeetCode__Longest Common Prefix 算法
- 【练习】经典算法练习
- 算法练习
- 算法练习
- 算法练习
- 算法练习
- 【算法练习】
- 算法练习
- 算法练习
- 算法练习
- C#字符串连接和StringBuilder字符串拼接性能测试
- 在windows下使用ipython
- 自定义浏览器滚动条的样式,打造属于你的滚动条风格——兼容IE和webkit(ff不支持)
- 火狐Firefox ios版本二次开发 (四) 源码精简
- Java端实现RedisPUB/SUB(订阅发布)
- 算法练习5:Common Denominators
- qt——QFileDialog使用对话框选取本地文件
- 原码、反码、补码、移码
- 数据库索引的实现原理
- Xposed Android hook -方法介绍
- zookeeper 集群异常:Error contacting service. It is probably not running.
- 书写高质量jQuery代码的12条经验
- Calendar相关记录
- 润乾报表编辑风格下拉树全选实现