博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2016蘑菇街编程题5题
阅读量:6114 次
发布时间:2019-06-21

本文共 4466 字,大约阅读时间需要 14 分钟。

     花了差不多一天的时间的搞定了这几道题,可能能搞定3道左右,期间也遇到了很多编程细节的问题,还借鉴了别人的思路,坚持练习!

//现在有一张半径为r的圆桌,其中心位于(x, y),现在他想把圆桌的中心移到(x1, y1)。每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转。问最少需要移动几步。////输入描述 ://一行五个整数r, x, y, x1, y1(1≤r≤100000, -100000≤x, y, x1, y1≤100000)//////输出描述 ://     输出一个整数,表示答案#include
#include
using namespace std;int main(){ long long r, x, y, x1, y1; //数据类型 while (cin >> r >> x >> y >> x1 >> y1) //多次测试 { long d = sqrt((x - x1)*(x - x1) + (y - y1)*(y - y1)); long result = (d % (2 * r) == 0) ? (d / (2 * r)) : (d / (2 * r) + 1); cout << result << endl; } return 0;}//给定一个递增序列,a1
<...
<= 100), 序列长度; 接下来n个小于1000的正整数,表示一个递增序列。//////输出描述 ://输出答案。/*************************操碎了心啊******************************/#include
using namespace std;#include
#include
int getMaxInterval(vector
ans){ int result = 0; for (int i = 0; i < ans.size() - 1; i++) { if (ans[i + 1] - ans[i]>result) { result = ans[i + 1] - ans[i]; } } return result;}int main(){ int n; vector
input, mid; while (cin >> n) { for (int i = 0; i < n; i++) { int temp = 0; cin >> temp; input.push_back(temp); } /*mid = input; //自己写的有错 for (auto it = input.begin() + 1; it != input.end() - 1; it++) { input.erase(it); if (reuslt>getMaxInterval(input)) { reuslt = getMaxInterval(input); } else reuslt = (getMaxInterval(input)); input = mid; }*/ /* int min = INT_MAX; //参考别人的 for (int i = 1; i < input.size() - 1; ++i) { vector
tmp = input;//借助的临时变量 tmp.erase(tmp.begin() + i); if (getMaxInterval(tmp) < min) min = getMaxInterval(tmp); } */ //记录相邻元素的间隔值,间隔值得最大值 vector
temp; int maxd = 0; for (int i = 1; i <= input.size() - 1; i++) { temp.push_back(input[i] - input[i - 1]); maxd = (input[i] - input[i - 1])>maxd ? (input[i] - input[i - 1]) : maxd; } //相邻间隔值合并,找出最小的最大间隔 //当删除元素在原数组的最大间隔的两个元素时候最大间隔增大,当在其他位置时候, //这个最大间隔不变,其他位置的间隔增加 int result = 10000; for (int i = 1; i <= temp.size() - 1; i++) { int d = temp[i] + temp[i - 1]; if (d > maxd) { //大于最大间隔里面求最小的;只有当删除每个元素对应的间隔都大于maxd,最大间隔的最小值才有意义 if (d
bi,ci+1>di////输出描述 ://输出答案个数//解题思路:////小蘑的时间假设为[a,b],小菇的时间假设是[c + t,d + t],小菇起床的时间是t∈[l,r]//那么当"a < b < (c+t) < (d+t)"或者"(c+t) < (d+t) < a < b"的情况时,小蘑和小菇无法聊天,由题目条件已知"a < b"和"c < d",那么推出"(c+t) < (d+t)"//所以仅仅当"b < (c+t)"或者"(d+t) < a"时无法聊天,其余情况都是可以聊天的/**********************************************************************/#include
using namespace std;#include
int p, q, l, r;bool isAdapter(int t,vector
> m,vector
> n){ int count = 0; for (int i = 0; i < p; i++) { for (int j = 0; j < q; j++) { if (!(m[i][1] + t)
>p>>q>>l>>r) { int temp=0; vector
> m(p,vector
(2)), n(q,vector
(2)); for (int i = 0; i < p; i++) //输入有效性 { for (int j = 0; j < 2; j++) { cin >> temp; m[i][j] = temp; } } for (int i = 0; i < q; i++) { for (int j = 0; j < 2; j++) { cin >> temp; n[i][j] = temp; } } int count = 0; for (int t = l; t <= r; t++) { if (isAdapter(t, m, n)) count++; } cout << count << endl; } return 0;}/************************************************************************************///有一个投篮游戏。球场有p个篮筐, 编号为0,1...,p - 1 。每个篮筐下有个袋子,每个袋子最多装一个篮球。//有n个篮球,每个球编号xi 。规则是将数字为xi 的篮球投到xi 除p的余数为编号的袋里。若袋里已有篮球则球弹出游戏结束 输出i ,否则重复至所有球都投完。//输出 - 1。问游戏最终的输出是什么?//输入描述://第一行两个整数p, n(2≤p, n≤300)。p为篮筐数,n为篮球数。接着n行为篮球上的数字xi(0≤xi≤1e9)//输出描述://输出游戏的结果//输入例子 ://10 5//0//21//53//41//53//输出例子://4/*********************************************************/#include
using namespace std;#include
int main(){ int p, n; while (cin>>p>>n) { vector
bNumber(n,0); //bNumber(n,0) 这样push_back()会从第五个开始累加,前面5个为0,然后再push数据 vector
pNumber(p, false); long long temp = 0; for (int i = 0; i < n; i++) { //cin >> temp; //bNumber.push_back(temp); cin >> bNumber[i]; //这样可以避免从第五个累加,确定了下标 } bool complete = true; for (size_t i = 0; i < bNumber.size(); i++) { if (pNumber[bNumber[i] % p] == false) { pNumber[bNumber[i] % p] =true; //continue; } else if (pNumber[bNumber[i] % p] == true) { complete = false; cout<< i+1<
#include
#include
using namespace std;bool isPalindrome(string str){ string temp = str; reverse(str.begin(),str.end()); return str == temp;}int main(){ string str; while (cin>>str) { if (str.size()<=0||str.size()==1) { cout << "YES" << endl; } else { bool temp = true; for (size_t i = 0; i < str.size(); i++) { string strTemp = str; strTemp.erase(strTemp.begin() + i); // tmp = str.substr(0, i) + str.substr(i + 1); if (isPalindrome(strTemp)) { cout << "YES" << endl; temp = false; break; } } if (temp) { cout << "NO" << endl; } } } return 0;}

 

转载地址:http://mqcka.baihongyu.com/

你可能感兴趣的文章
[转]无法安装MVC3,一直卡在vs10-kb2483190
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
web框架-(二)Django基础
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
Excel到R中的日期转换
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>