Week 11 必做题

  • A 必做题 1
    • 题目描述
    • 输入格式
    • 输出格式
    • 输入样例
    • 输出样例
    • 思路
    • 代码
  • B 必做题 2
    • 题目描述
    • 输入格式
    • 输出格式
    • 数据范围
    • 样例输入
    • 样例输出
    • 思路
    • 代码
  • C 必做题 3
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例输入
    • 样例输出
    • 思路
    • 代码
  • D 必做题 4
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例
      • 样例输入1
      • 样例输出1
      • 样例输入2
      • 样例输出2
      • 样例输入3
      • 样例输出3
    • 思路
    • 代码

A 必做题 1

题目描述

蒜头君从现在开始工作,年薪 N 万。他希望在蒜厂附近买一套 60 平米的房子,现在价格是 200 万。假设房子价格以每年百分之 K 增长,并且蒜头君未来年薪不变,且不吃不喝,不用交税,每年所得 N 万全都积攒起来,问第几年能够买下这套房子?(第一年年薪 N 万,房价 200 万)

输入格式

一行,包含两个正整数 N(10≤N≤50),K(1≤K≤20),中间用单个空格隔开。

输出格式

如果在第 20 年或者之前就能买下这套房子,则输出一个整数 M,表示最早需要在第 M 年能买下;否则输出"Impossible"。输出时每行末尾的多余空格,不影响答案正确性

输入样例

50 10

输出样例

8

思路

从第一年开始循环计算当年总收入与当年的房价,直到年数超过20年或者总收入大于房价停止循环。
循环结束后,若年数小于20,说明在20年内某一年总收入大于房价,则输出年数即可,若年数大于20,则说明20年内每一年房价都比总收入大,则输出“Impossible”。

代码

#include <iostream>
using namespace std;
int N,K;
int main(int argc, char** argv) {scanf("%d%d",&N,&K);int i=1;int sum=N;double pay=200;while(i<=20&&sum<pay){i++;sum+=N;pay+=(pay/100)*K;}if(i<=20)printf("%d\n",i);elseprintf("Impossible\n");return 0;
}

B 必做题 2

题目描述

蒜头君的班级里有 n^2 个同学,现在全班同学已经排列成一个 n∗n 的方阵。
但是老师却临时给出了一组新的列队方案。
为了方便列队,所以老师只关注这个方阵中同学的性别,不看具体的人是谁这里我们用 0 表示男生,用 1 表示女生。
现在蒜头君告诉你同学们已经排好的方阵是什么样的,再告诉你老师希望的方阵是什么样的,他想知道同学们已经列好的方阵能否通过顺时针旋转变成老师希望的方阵
1、不需要旋转则输出 0
2、顺时针旋转 90° 则输出 1
3、顺时针旋转 180° 则输出 2
4、顺时针旋转 270° 则输出 3
若不满足以上四种情况则输出 −1若满足多种情况,则输出较小的数字。

输入格式

第一行为一个整数 n
接下来的 n 行同学们已经列好的 01 方阵;
再接下来的 n 行表示老师希望的的 01 方阵。

输出格式

输出仅有一行,该行只有一个整数,如题所示。

数据范围

对于 100% 的数据中,1≤n≤20,输出时每行末尾的多余空格,不影响答案正确性

样例输入

4
0 0 0 0
0 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0

样例输出

1

思路

首先将输入保存到两个数组之中,接下来就是如何旋转数组。
对数组进行90°,180°,270°旋转后的结果,可看成是更改一下数组每个数的下标,因此我们可以直接改变数组的遍历方式,已到达与旋转相同的效果,如旋转90°,即将n列反向后变成第n行,因此改成从第一列的最后一个向上遍历,从第一列向后遍历即可…依据这种思想,我们可直接使用原始数组,对要旋转的数组采用不同的遍历方式来与目标数组(目标数组采用普通的遍历方式即可)比较即可判断旋转后是否匹配。

代码

#include <iostream>
using namespace std;
const int Size=20+5;
int s[Size][Size];
int t[Size][Size];
int N;
bool r0()
{for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)if(s[i][j]!=t[i][j])return false;return true;
}
bool r90()
{for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)if(t[i][j]!=s[N-j+1][i])return false;return true;
}
bool r180()
{for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)if(t[i][j]!=s[N-i+1][N-j+1])return false;return true;
}
bool r270()
{for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)if(t[i][j]!=s[j][N-i+1])return false;return true;
}
int main(int argc, char** argv) {scanf("%d",&N);for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)scanf("%d",&s[i][j]);for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)scanf("%d",&t[i][j]);int flag=-1;if(r0())flag=0;else if(r90())flag=1;else if(r180())flag=2;else if(r270())flag=3;printf("%d\n",flag);return 0;
}

C 必做题 3

题目描述

Julius Caesar 曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后 5 位对应的字符来代替,这样就得到了密文。比如字符’A’用’F’来代替。如下是密文和明文中字符的对应关系。
密文
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z明文
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
你的任务是对给定的密文进行解密得到明文。你需要注意的是,密文中出现的字母都是大写字母。密文中也包括非字母的字符,对这些字符不用进行解码。

输入格式

一行,给出密文,密文不为空,而且其中的字符数不超过 200。

输出格式

输出一行,即密文对应的明文。
输出时每行末尾的多余空格,不影响答案正确性

样例输入

NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX

样例输出

IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES

思路

首先将密文读入到一个char数组之中,遍历每一个字符,若其为大写字母则需转换为明文,这里密文转明文是一种类似环状结构中向前移5的操作,若该字符在F之后,则直接减5即可,若其在F之前,则同样需向前减5,不过小于A的时候需转到Z来操作。

代码

#include <iostream>
#include<string.h>
using namespace std;
const int size=200+10;
char str[size];
int main(int argc, char** argv) {while(scanf("%[^\n]",str)!=EOF){int len=strlen(str);for(int i=0;i<len;i++){if(str[i]>='A'&&str[i]<='Z'){if(str[i]>='F')str[i]=str[i]-5;else{str[i]='Z'-(5-(str[i]-'A'+1));}}}for(int i=0;i<len;i++)printf("%c",str[i]);printf("\n");getchar();}return 0;
}

D 必做题 4

题目描述

东东和他的女朋友(幻想的)去寿司店吃晚餐(在梦中),他发现了一个有趣的事情,这家餐厅提供的 n 个的寿司被连续的放置在桌子上 (有序),东东可以选择一段连续的寿司来吃。
东东想吃鳗鱼,但是东妹想吃金枪鱼。核 平 起 见,他们想选择一段连续的寿司(这段寿司必须满足金枪鱼的数量等于鳗鱼的数量,且前一半全是一种,后一半全是另外一种)我们用1代表鳗鱼,2代表金枪鱼。
比如,[2,2,2,1,1,1]这段序列是合法的,[1,2,1,2,1,2]是非法的。因为它不满足第二个要求。
东东希望你能帮助他找到最长的一段合法寿司,以便自己能吃饱。

输入格式

第一行:一个整数n(2≤n≤100000),寿司序列的长度。

第二行:n个整数(每个整数不是1就是2,意义如上所述)

输出格式

输出:一个整数(代表东东可以选择的最长的一段连续的且合法的寿司)

样例

样例输入1

7
2 2 2 1 1 2 2

样例输出1

4

样例输入2

6
1 2 1 2 1 2

样例输出2

2

样例输入3

9
2 2 1 1 1 2 2 2 2

样例输出3

6

思路

对于可选中的子序列,必须前一半均为一种,后一半均为另一种,所以这里对数据进行了预处理,将数字相同的子序列进行合并,记录其数量。
如 2 2 2 1 1 1这一段原始数组,处理后为3 3
表示有3个数字相同的子序列,之后又有三个数字相同的子序列。
所以原数组变成了表示一段相同数字的子序列的长度数组。因为原数组中不是1就是2,所以处理后的数组相邻的必代表不同的数字1或2,若数字相同,则必然在预处理的时候合并了。
处理结束后,对于两个相邻的数字a,b,局部可取到的最长序列长度为2*min(a,b),遍历处理后的数组,即可取到所求的最长子序列。

代码

#include <iostream>
using namespace std;
const int size=1e5+10;
int note[size];
int tot=-1;
int N;
int Max[size];
int solve()
{int last=note[0];Max[++tot]=0;for(int i=0;i<N;i++)if(note[i]==last)Max[tot]++;else{Max[++tot]=1;last=note[i];}int ans=0;for(int i=1;i<=tot;i++){int temp=2*min(Max[i],Max[i-1]);ans=max(ans,temp);}return ans;
}
int main(int argc, char** argv) {scanf("%d",&N);for(int i=0;i<N;i++)scanf("%d",&note[i]);int ans=solve();printf("%d\n",ans);return 0;
}

【Week 11 作业】必做题相关推荐

  1. 程序设计思维与实践 Week12 作业 必做题 A-zjm找数

    题目链接:A-zjm找数 题目描述: 给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少? Input: 本题包含多组数据: 每组数据包含两行. 第一行一个数字N( ...

  2. 程序设计思维与实践 Week11 作业 必做题 A-蒜头君买房子

    题目链接:A-蒜头君买房子 题目描述: 蒜头君从现在开始工作,年薪N万.他希望在蒜厂附近买一套60平米的房子,现在价格是 200万.假设房子价格以每年百分之K增长,并且蒜头君未来年薪不变,且不吃不喝, ...

  3. 作业辅导视频 SS2023-HW10:Laplace反变换-因式分解方法-必做题部分

    拉普拉斯反变换-第一部分 信号与系统 2023(春季) 作业参考答案 - 第 十次作业 信号与系统 2023(春季) 作业要求 - 第10次作业 信号与系统分析2022春季作业-参考答案:第十次作业 ...

  4. 计算机二级msoffice设计,2017计算机二级MSoffice攻关必做题

    2017计算机二级MSoffice攻关必做题 参考答案及解析: 1.A [解析]程序执行的效率与数据的存储结构.数据的逻辑结构.程序的控制结构.所处理的数据量等有关. 2.D [解析]队列的修改是依先 ...

  5. week11作业题_D - 必做题11-4

    D - 必做题11- 4 题目描述 东东和他的女朋友(幻想的)去寿司店吃晚餐(在梦中),他发现了一个有趣的事情,这家餐厅提供的 n 个的寿司被连续的放置在桌子上 (有序),东东可以选择一段连续的寿司来 ...

  6. 2018.12.10 第5题:定义两个类,描述如下: [必做题] 5.1定义一个人类Person: 5.1.1定义一个方法sayHello(),可以向对方发出问候语“hello,my name is

    #定义两个类,描述如下: [必做题] 5.1定义一个人类Person: 5.1.1定义一个方法sayHello(),可以向对方发出问候语"hello,my name is XXX" ...

  7. week11 C - 必做题11-3

    必做题11-3 Julius Caesar 曾经使用过一种很简单的密码.对于明文中的每个字符,将它用它字母表中后 555 位对应的字符来代替,这样就得到了密文.比如字符'A'用'F'来代替.如下是密文 ...

  8. 全国青少年信息素养大赛2023年python·必做题模拟四卷

    全国青少年电子信息智能创新大赛 python·必做题模拟四卷 一.单选题 1. 取整除的运算符是?( ) A./ B.// C.÷ D.** 题型:单选题 答案:B 难度:一般 试题解析:B

  9. 2018.12.10 第4题:定义两个类,描述如下: [必做题] 4.1定义一个人类Person: 4.1.1定义一个方法sayHello(),可以向对方发出问候语“hello,my name is

    #定义两个类,描述如下: [必做题] 4.1定义一个人类Person: 4.1.1定义一个方法sayHello(),可以向对方发出问候语"hello,my name is XXX" ...

最新文章

  1. boost::mp11::mp_replace_at_c相关用法的测试程序
  2. Mac下显示隐藏文件
  3. GCPC2014 C Bounty Hunter
  4. 第十二届蓝桥杯省赛A组砝码称重Java解题思路及代码
  5. QT高级编程之QT基本概览
  6. linux用usermod修改密码,Linux笔记(usermod命令,用户密码管理,mkpasswd)
  7. Python生成exe可执行文件的两种方法(py2exe和pyinstaller)
  8. 转Java调用C/C++编写的第三方dll动态链接库(非native API)--- JNI
  9. List列表拒绝添加重复信息
  10. python读音-原来Python应该这么念,怪不得总被嘲笑~
  11. 『题解』Codeforces446C DZY Loves Fibonacci Numbers
  12. 适配器模式之享元模式
  13. Java并发编程实战 - 笔记
  14. RS232与RS485协议原理及应用
  15. Go Module 私有仓库:fatal: could not read Username for ‘https://xxx.com‘: terminal prompts disabled
  16. 单张像片空间后方交会
  17. Q-learning原理及其实现方法
  18. 字体信息 TEXTMETRIC 字体结构 GLYPHMETRICS
  19. 通行宝深交所上市:市值84亿 腾讯云与上汽是股东
  20. 均匀化退火时间_热处理加工均匀化退火要点

热门文章

  1. Python读写excel库对比
  2. android 图片 灰度图,Android-将RGB彩×××转换为灰度图
  3. BGP 的选路和属性
  4. 黑洞照片打印是用超级计算机,黑洞照片怎么拍的
  5. python影像组学_【影像组学预测模型-Radiomics】实操教学
  6. dede mysql query_DedeCMS V5.7版本全文检索功能使用教程
  7. 【9502】子集问题
  8. 2018秋c语言程序设计考试答案,2018秋C语言程序设计上(赵三元)-中国大学mooc-题库零氪...
  9. 内部fitbits计划使用新的可穿戴设备检测共病症状
  10. 最能挽救头发的五种营养物质