A - 必做题11-1
题目:
蒜头君从现在开始工作,年薪 NN 万。他希望在蒜厂附近买一套 6060 平米的房子,现在价格是 200200 万。假设房子价格以每年百分之 KK 增长,并且蒜头君未来年薪不变,且不吃不喝,不用交税,每年所得 NN 万全都积攒起来,问第几年能够买下这套房子?(第一年年薪 NN 万,房价 200200 万)
输入格式
一行,包含两个正整数 N(10 \le N \le 50)N(10≤N≤50),K(1 \le K \le 20)K(1≤K≤20),中间用单个空格隔开。
输出格式
如果在第 2020 年或者之前就能买下这套房子,则输出一个整数 MM,表示最早需要在第 MM 年能买下;否则输出"Impossible"。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
50 10
样例输出
8
思路:
针对年薪综合以及房价进行大小对比,如果年薪总和小则在过一年,因此进行while循环,最终判断是否大于20.按照要求输出。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k,x=1;
cin >> n >> k;
float k1=200.0;
while(n*x<k1)
{
x++;
k1+=k1*k/100.0;
if(x>20)
break;
}
if(x<=20)
cout << x << endl;
else
cout << "Impossible" << endl;
}
B
题目:
蒜头君的班级里有 n^2n
2
个同学,现在全班同学已经排列成一个 n * nn∗n 的方阵,但是老师却临时给出了一组新的列队方案
为了方便列队,所以老师只关注这个方阵中同学的性别,不看具体的人是谁
这里我们用 00 表示男生,用 11 表示女生
现在蒜头君告诉你同学们已经排好的方阵是什么样的,再告诉你老师希望的方阵是什么样的
他想知道同学们已经列好的方阵能否通过顺时针旋转变成老师希望的方阵
不需要旋转则输出 00
顺时针旋转 90° 则输出 11
顺时针旋转 180° 则输出 22
顺时针旋转 270° 则输出 33
若不满足以上四种情况则输出 -1−1
若满足多种情况,则输出较小的数字
输入格式
第一行为一个整数 nn
接下来的 nn 行同学们已经列好的 0101 方阵;
再接下来的 nn 行表示老师希望的的 0101 方阵。
输出格式
输出仅有一行,该行只有一个整数,如题所示。
数据范围
对于 100%100% 的数据中,1 \leq n \leq 201≤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
思路:
只需将3中排队的情况都列出来即可,注意不要搞错数组的顺序,然后与要求队列进行对比,按要求输出即可。
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[30][30];
int b[30][30];
int c[30][30];
bool z(int x[30][30],int y[30][30])
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(x[i][j]!=y[i][j])
return false;
}
}
return true;
}
int find()
{
if(z(b,a))
return 0;
for(int j=1;j<=n;j++)
{
for(int i=n;i>=1;i--)
{
c[j][n+1-i]=a[i][j];
}
}
if(z(b,c))
return 1;
for(int i=n;i>=1;i--