A题
思路
- 1.按题意输入输出即可
坑点
- 1.无
总结
签到题。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a / b << " " << a % b << endl;
return 0;
}
B题
思路
- 1.全排列,判断一下给的数是第几次出现的即可。
不会的可以参考全排列
坑点
- 1.无
总结
递归模板题。
代码
#include<bits/stdc++.h>
using namespace std;
int n;
int flag;
bool res[300]={0};
int ans[300];
bool f = 0;
int bbb=0;
int aa=0;
void dfs(int u)
{
if(u > n)
{
int sum = 0;
aa++;
for (int i = 1; i <= n; i ++)
{
sum = sum * 10 + ans[i];
}
if (sum == flag)
{
bbb = aa;
}
return;
}
for (int i = 1; i <= n; i ++ )
{
if(res[i] == 0)
{
ans[u] = i;
res[i] = 1;
dfs(u + 1);
res[i]=0;
}
}
}
int main()
{
cin >> n;cin >> flag;
dfs(1);
cout << bbb << endl;
return 0;
}
C题
思路
- 1.因为数据范围很大,所以要用
string
形式读入。- 2.然后通过
s[i] - '0'
把字符转换成数字,把该数字定义为a。- 3.初始化数组
hash[10] = {0};
。- 4.然后标记
hash[a] = 1
;代表a出现过,若没有出现过就是0。- 5.对输入的第二个字符串重新开一个数组,重复以上操作。
- 6.最后用i遍历0 ~ 9,看如果记录两个字符串里当前i出现次数的都不为0,那么说明这一位数字在两个
- 7.字符串中都出现过,那么就输出这个数。
- 8.如果一个数都没有,就输出-1。
坑点
- 1.要开long long
总结
哈希,字符串。
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
int hash1[100];
int hash2[100];
signed main()
{
string s1, s2;
cin >> s1 >> s2;
for (int i = 0; i < s1.length(); i ++ )
{
hash1[s1[i] - '0'] = 1;
}
for (int i = 0; i < s2.length(); i ++ )
{
hash2[s2[i] - '0'] = 1;
}
bool f = 0;
for (int i = 0; i <= 9; i ++ )
{
if (hash1[i] != 0 && hash2[i] != 0)
{
f = 1;
cout << i << " ";
}
}
if (!f) cout << -1;
return 0;
}
D题
思路
- 1.通过观察可发现,每次取最大的数两个数然后把这两个数删掉可以得到min,每次选最小的两个数删掉可以得到max, 再放进去。
- 2.做法:使用优先队列,优先队列可以自动实现排序,详细用法:优先队列用法
坑点
- 1.无。
总结
优先队列。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
priority_queue<int, vector<int>, less<int>> q;
priority_queue<int, vector<int>, greater<int>> q1;
int n; cin >> n;
for (int i = 1; i <= n; i ++ )
{
int x; cin >> x;
q1.push(x);
q.push(x);
}
int nnn; cin >> nnn;
while (q1.size() > 1)
{
int a = q1.top();
q1.pop();
int b = q1.top();
q1.pop();
q1.push(a * b + 1);
}
while (q.size() > 1)
{
int a = q.top();
q.pop();
int b = q.top();
q.pop();
q.push(a * b + 1);
}
cout << q1.top() - q.top() << endl;
return 0;
}
E题
题解
总结
考察了一些思维能力和二分答案。