A - 必做题
蒜头君从现在开始工作,年薪 NN 万。他希望在蒜厂附近买一套 60 平米的房子,现在价格是 200万。假设房子价格以每年百分之 KK 增长,并且蒜头君未来年薪不变,且不吃不喝,不用交税,每年所得 NN 万全都积攒起来,问第几年能够买下这套房子?(第一年年薪 NN 万,房价 200200 万)
输入格式
一行,包含两个正整数 N(10≤N≤50),K(1≤K≤20),中间用单个空格隔开。
输出格式
如果在第 20 年或者之前就能买下这套房子,则输出一个整数 MM,表示最早需要在第 MM 年能买下;否则输出"Impossible"。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
50 10
样例输出
8
做法
房子价格p,现有存款s,第m年能买下房子。利用while循环更新房子价格和存款,当m>20或存款大于房价时,跳出循环,根据m的值判断结果。
需要注意的是变量类型float、int。
代码
#include<iostream>
using namespace std;
int main()
{
int n;
float k;
cin>>n>>k;
int m=1;
float p=200;
int s=n;
while(1)
{
m++;
p=p*(1+k/100);
//cout<<p<<' ';
s=n*m;
if(m>20||s>=p)
break;
}
if(m>20)
cout<<"Impossible"<<endl;
else
cout<<m<<endl;
return 0;
}
B - 必做题
蒜头君的班级里有 n^2 个同学,现在全班同学已经排列成一个 n∗n 的方阵,但是老师却临时给出了一组新的列队方案
为了方便列队,所以老师只关注这个方阵中同学的性别,不看具体的人是谁
这里我们用 0 表示男生,用 1 表示女生
现在蒜头君告诉你同学们已经排好的方阵是什么样的,再告诉你老师希望的方阵是什么样的
他想知道同学们已经列好的方阵能否通过顺时针旋转变成老师希望的方阵
不需要旋转则输出 0
顺时针旋转 90° 则输出 1
顺时针旋转 180° 则输出 2
顺时针旋转 270° 则输出 3
若不满足以上四种情况则输出 −1
若满足多种情况,则输出较小的数字
输入格式
第一行为一个整数 n
接下来的 n 行同学们已经列好的 01 方阵;
再接下来的 n 行表示老师希望的的 01 方阵。
输出格式
输出仅有一行,该行只有一个整数,如题所示。
数据范围
对于 100%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
做法
数组b表示老师希望的方阵,数组a表示同学列好的方阵,数组c表示旋转后的方阵。函数spin()每次给数组a旋转90度并保存到数组c中,同时和数组b比较,若相同则返回true,否则返回false。旋转180度和270度分别可以通过调用两次、三次spin()函数完成。
代码
#include<iostream>
using namespace std;
int a[30][30