记几道编程题目
【摘要】 最小公倍数 (1-n 个数的最小公倍数,大数)
最小公倍数 (1-n 个数的最小公倍数,大数)
两种任意进制之间的转换(大数)
C++ ! 最大公约数 !(大数)
https://blog.csdn.net/weixin_42228705/article/details/100082286
通用的最小公倍数和最大公约数运算
https://blog.csdn.net/xiaoquantouer/article/details/61919470
Pairs of Numbers
https://www.cnblogs.com/ustc-anmin/p/11265363.html
整数的质因子
https://blog.csdn.net/zzran/article/details/8076783
#include <iostream>
#include <cmath>
using namespace std;
void prime_factors(long n) {
long i;
while(n % 2 ==0) {
n = n / 2;
cout<<2<<" ";
}
for(i = 3; i <= sqrt(n); i += 2) {
while(n % i == 0) {
n = n / i;
cout<<i<<" ";
}
}
if(n > 2) {
cout<<n << " ";
}
}
int main(int argc, char *argv[])
{
long num;
cin>>num;
prime_factors(num);
return 0;
}
- 135 修理手机 -- 队列的使用
题目描述
一个城市可以近似看成n*m的网格图,某公司有k个维修点,每个维修点有固定的坐标,城市里面有h个客户需要修理手机,客户有固定的坐标。维修员在地图上只能上下左右走,不能斜着走,每走一个格子需要2块钱的花费。每个维修点拥有无数个员工,每个员工可以被派去为一个客户服务。城市里面有z个地方在修理管道,这些地方是不能走的。可能有一些客户是被隔离的(上下左右都在修管道),这里是不需要派员工去修理手机了。华为公司为了节省财力,想找到最小的花费。
输入
第一行给出两个正整数n,m(0<n<1000,0<m<1000)。第二行给出k(0<k<20)以及k个维修点的坐标。第三行给出z(0<z<100)以及z个坐标。第四行给出h(0<h<100)以及h个坐标。保证客户,维修点以及修理管道都在n*m的地图里面。
输出
输出最小的花费。
样例
输入样例 1
100 100
4 1 1 2 2 3 3 4 4
1 0 0
3 99 99 88 88 77 77
输出样例 1
1008
提示
对于队列的应用,部分数据用bfs也能过。
https://blog.csdn.net/zhongyunde/article/details/100621939
- 购物单 (www.nowcoder.com)
题目描述
王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:
主件 附件
电脑 打印机,扫描仪
书柜 图书
书桌 台灯,文具
工作椅 无
如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有 0 个、 1 个或 2 个附件。附件不再有从属于自己的附件。王强想买的东西很多,为了不超出预算,他把每件物品规定了一个重要度,分为 5 等:用整数 1 ~ 5 表示,第 5 等最重要。他还从因特网上查到了每件物品的价格(都是 10 元的整数倍)。他希望在不超过 N 元(可以等于 N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。
设第 j 件物品的价格为 v[j] ,重要度为 w[j] ,共选中了 k 件物品,编号依次为 j 1 , j 2 ,……, j k ,则所求的总和为:
v[j 1 ]*w[j 1 ]+v[j 2 ]*w[j 2 ]+ … +v[j k ]*w[j k ] 。(其中 * 为乘号)
请你帮助王强设计一个满足要求的购物单。
输入描述:
输入的第 1 行,为两个正整数,用一个空格隔开:N m(其中 N ( <32000 )表示总钱数, m ( <60 )为希望购买物品的个数。)
从第 2 行到第 m+1 行,第 j 行给出了编号为 j-1 的物品的基本数据,每行有 3 个非负整数 v p q(其中 v 表示该物品的价格( v<10000 ), p 表示该物品的重要度( 1 ~ 5 ), q 表示该物品是主件还是附件。如果 q=0 ,表示该物品为主件,如果 q>0 ,表示该物品为附件, q 是所属主件的编号)
输出描述:
输出文件只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值( <200000 )。
示例1
输入
复制
1000 5
800 2 0
400 5 1
300 5 1
400 3 0
500 2 0
输出
复制
2200
- OJ1964-求解立方根(牛顿迭代法) - https://songlee24.github.io/2015/03/20/hua-wei-OJ1964/
#include <iostream>
#include <iomanip>
using namespace std;
#define E 0.01
double f(double x, double num) // 函数
{
return x*x*x-num;
}
double _f(double x) // 导函数
{
return 3*x*x;
}
double getCubeRoot(double input)
{
double x0;
double r = 1;
do
{
x0 = r;
r = x0 - f(x0,input)/_f(x0);
} while(f(r,input) > E || f(r,input) < -E);
return r;
}
int main()
{
double x;
cin >> x;
double result = getCubeRoot(x);
cout << fixed << showpoint << setprecision(1) << result << endl;
return 0;
}
/*-----------------------备用片段---------------------------------------*/
stl自定义排序
set 自定义排序规则
struct custom_compare final
{
bool operator() (const std::string& left, const std::string& right) const
{
int nLeft = atoi(left.c_str());
int nRight = atoi(right.c_str());
return nLeft < nRight;
}
};
std::set<std::string, custom_compare> sut_custom({"1", "2", "5", "23", "6", "290"},
custom_compare{}); //< Compare object optional as its default constructible.
map 自定义排序规则的
struct cmpByStringLength {
bool operator()(const std::string& a, const std::string& b) const {
return a.length() < b.length();
}
};
// ...
std::map<std::string, std::string, cmpByStringLength> myMap;
c++11
auto comp = [](const string& a, const string& b) { return a.length() < b.length(); };
map<string, string, decltype(comp)> my_map(comp);
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)