A. 符合条件的数
题目描述
- 给出 NN 和 kk,找到一个不小于 NN 的正整数,满足这个数中有 kk 位数字是 33,且尽可能小。
输入格式
WA
#include <iostream>
#include <string>
using namespace std;
int main()
{
int k, cnt = 1;
string num;
cin >> num >> k;
for (int index = 0; index != num.length(); ++index)
{
//cout << num[index] << " ";
if(num[index] == '3')
{
cnt++;
if(cnt == k){
cout << num << endl;
break;
}
else
{
cout << "error!" << endl;
continue;
}
}
}
return 0;
}
AC
#include <bits/stdc++.h>
using namespace std;
int main()
{
std::ios_base::sync_with_stdio(false);
int i, n, k;
cin >> n >> k;
for (i = n;; i++)
{
int tmp = i, sum = 0;
while(tmp != 0)
{
if(tmp % 10 == 3)
sum++;
tmp /= 10;
}
if(sum == k)
break;
}
cout << i << endl;
return 0;
}
B. 选代表
AC
#include <iostream>
using namespace std;
int main()
{
/*
思路:去除重复的元素,对剩余的元素进行排序
由于读入的元素在 0 ~ 1000 之间,我们准备一个长度为1001的数组
用来标记 x 有没有出现过
*/
int i, n, a[110], x, j, t;
int f[1001] = {0}; // 标记数组
int k = 0; // 表示目前数组中实际不重复的元素个数
cin >> n;
// i代表将要读入n个数,相当于是一个计数器
for (i = 0; i < n; i++)
{
cin >> x;
// 如果数组a中没有元素x,则将x存入数组
if (f[x] == 0)
{
a[k] = x;
k++;
// 修改标记,标记x出现了
f[x] = 1;
}
}
// 输出
cout << a[0];
for (i = 1; i < k; i++)
cout << " " << a[i];
}
题解 AC
#include <iostream>
using namespace std;
bool vis[105]; //记录输入的数是否出现过
int main()
{
int a, n;
cin >> n;
for (int i = 1; i <= n;i++)
{
cin >> a;
if(!vis[a])
{
cout << a << " ";
vis[a] = 1;
}
}
return 0;
}
C. 成绩统计
AC
#include <bits/stdc++.h>
using namespace std;
struct stu
{
string name;
int id, score;
} s[110];
bool cmp(stu &x, stu &y)
{
if(x.score == y.score)
return x.id < y.id;
return x.score > y.score;
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n;i++)
{
int mid, final;
cin >> s[i].name >> mid >> final;
s[i].id = i;
s[i].score = int(round(0.6 * ceil(10 * sqrt(final)) + 0.4 * mid));
}
sort(s + 1, s + n + 1, cmp);
for (int i = 1; i <= n;i++)
{
cout << s[i].name << " " << s[i].score << endl;
}
return 0;
}
Tips
- 对于小数而言,round()函数仅仅保留到整数位,即仅仅对小数点后一位四舍五入。
D. 背答案
AC
#include <bits/stdc++.h>
using namespace std;
int main()
{
string timu[105], daan[105];
int n, q;
cin >> n >> q;
for (int i = 1; i <= n;i++)
{
cin >> timu[i] >> daan[i];
}
for (int i = 1; i <= q;i++)
{
string t, a, b, c, d;
int flag;
cin >> t >> a >> b >> c >> d;
for (int j = 1; j <= n;j++)
{
if(t == timu[j])
{
flag = j;
break;
}
}
if(daan[flag] == a)
cout << "A" << endl;
if(daan[flag] == b)
cout << "B" << endl;
if(daan[flag] == c)
cout << "C" << endl;
if(daan[flag] == d)
cout << "D" << endl;
}
return 0;
}
E. 击鼓传花
AC
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 1000010
int n, m, k, t, a[N], ans;
int main()
{
cin >> n >> m >> k;
for (int i = 0; i < m; i++)
{
cin >> t;
if (a[t])
continue;
while (1)
{
if (a[t] == 1)
break;
a[t] = 1;
t += k;
t %= n;
}
}
for (int i = 0; i < n; i++)
{
if (a[i] == 0)
ans++;
}
cout << ans;
return 0;
}