在青蛙王国,每个青蛙有着不同的体重。
给出一组青蛙的体重,计算里面超出平均体重的青蛙数量。
第一行输入参数T,表示有T个测试实例
第二行输入参数n,表示这一组青蛙的数量,第三行输入n个青蛙的体重
以此类推
输出每一组青蛙中,超出平均体重的青蛙数量。
2
3
1 2 3
4
10 20 30 40
1
2
#include
using namespace std;
#include
int main()
{
int n;
cin >> n;
while (n--)
{
int sum = 0, cnt = 0, num;
cin >> num;
vector<int>v(num);
for (int i = 0; i < num; i++)
{
cin >> v[i];
sum += v[i];
}
double ave = 1.0 * sum / num;
for (int i = 0; i < num; i++)
{
if (v[i] > ave)
cnt++;
}
cout << cnt << endl;
}
return 0;
}
每个箱子都有长宽高,我们需要判断一个箱子能否放入另一个箱子中。
例如有箱子A的尺寸是 3 x 4 x 5,箱子B的尺寸 是 5 x 6 x 4,经过比较判断,可以知道箱子A能够放入箱子B中,我们就说箱子A匹配箱子B。
注意,当两个箱子尺寸相等,我们也认为它们匹配。
第一行输入参数T,表示有T个测试实例
第二行输入第1组实例的箱子A的长、宽、高,输入数值为小于1000的自然数
第三行输入第1组实例的箱子B的长、宽、高,输入数值为小于1000的自然数
以此类推
如果两个箱子匹配,输出yes,否则输出no。逐行输出每一组的箱子匹配结果。
3
3 4 5
5 6 4
5 6 4
3 4 5
5 6 7
7 4 7
yes
yes
no
#include
using namespace std;
#include
int main(){
int t;
cin >> t;
while (t--){
int a[3], b[3];
for (int i = 0; i < 3; i++) {
cin >> a[i];
}
for (int i = 0; i < 3; i++) {
cin >> b[i];
}
sort(a, a + 3);
sort(b, b + 3);
bool flag1 = 0, flag2 = 0;
for (int i = 0; i < 3; i++) {
if (a[i] < b[i])
flag1 = 1;
else if (a[i] > b[i])
flag2 = 1;
}
if (!flag1 || !flag2)
cout << "yes" << endl;
else
cout << "no" << endl;
}
return 0;
}
小六最喜欢的数字,当然是6了。当然,他也喜欢一切6的倍数,或者数位长度是6的倍数,或者末尾数字带6的数字。当给你一个数字,你能否告诉我,这是否是小六的幸运数呢?
输入数据的第一行为测试数据的个数t(1 <= t <= 100),接下来有t行。每一行是一个数字n(1 <= n <= 10000000)
对于每一组测试数据,如果是小六的幸运数字则输出“Yes”,否则输出“No”。每一组数据输出一行。
4
655665
222
6666656
6666665
Yes
Yes
Yes
No
#include
using namespace std;
int main() {
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
string s = to_string(n);
if (n % 6 == 0 || s.length() % 6 == 0 || *s.rbegin() == '6')
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
输入一个N*M的矩阵,要求将这个矩阵向左旋转90度后输出
比如现在有矩阵 :
1 2 3
4 5 6
向左旋转90度后的矩阵变为:
3 6
2 5
1 4
第一行输入T表示有T个测试实例
第二行输入矩阵维度N和M,表示N行和M列
第三行起输入矩阵数据,矩阵数据用自然数表示
下面依次类推
输出左转90度的矩阵
注意每行最后一个数据不带空格,直接换行
2
2 3
1 2 3
4 5 6
3 3
1 2 3
4 5 6
7 8 9
3 6
2 5
1 4
3 6 9
2 5 8
1 4 7
#include
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n, m;
cin >> n >> m;
vector<vector<int>>arr(n);
for (int i = 0; i < n; i++) {
arr[i].resize(m);
for (int j = 0; j < m; j++) {
cin >> arr[i][j];
}
}
for (int i = m - 1; i >= 0; i--) {
for (int j = 0; j < n; j++) {
if (j)cout << " ";
cout << arr[j][i];
}
cout << endl;
}
}
return 0;
}
有一种古典加密方法就是按照字母表顺序,把每个字母循环右移k位,从而转换为加密的另一个字母。
例如偏移2位,即A对应C,B对应D,……X对应Z,Y对应A,Z对应B;同样a对于c,b对应d,……x对应z,y对应a,z对应b。
当前设定加密规则是:循环右移4位,对于输入的字符,只对字母进行加密,字母区分大小写,其他字符例如数字、标点符号等不做加密,直接输出。
第一行输入T表示有T个测试实例
第二行输入一个字符串,字符串可以包含字母、数字、标点符号等
以此类推输入下一个数据
输出加密后的字符串
2
SZU1983
1949,china
WDY1983
1949,glmre
#include
using namespace std;
void transfer(char& ch) {
if (isalpha(ch))
for (int i = 0; i < 4; i++) {
if (ch == 'Z')
ch = 'A';
else if (ch == 'z')
ch = 'a';
else
ch++;
}
}
int main() {
int t;
cin >> t;
while (t--) {
string s;
cin >> s;
for (auto& ch : s) {
transfer(ch);
}
cout << s << endl;
}
return 0;
}
编写一个函数,m和n是参数,按以下公式求组合数的值,假设m,n都是正整数,且m>n。
主函数负责输入m和n的值,并调用函数求出组合数的值,并输出
测试数据的组数 t
第一组m,n
第二组m,n
…
第一组组合数的值
第二组组合数的值
…
3
8 5
6 3
10 8
56
20
45
#include
using namespace std;
#include
int factorial(int n) {
if (n == 0)
return 1;
int ans = 1;
for (int i = 2; i <= n; i++) {
ans *= i;
}
return ans;
}
int combinatorial_number(int m, int n) {
return factorial(m) / factorial(n) / factorial(m - n);
}
int main(){
int t;
cin >> t;
while (t--){
int m, n;
cin >> m >> n;
cout << combinatorial_number(m, n) << endl;
}
}
编写函数long change(char s[]),其作用是将参数表示的十六进制数转换为相应的十进制整数
测试数据的个数
第一个十六进制数
第二个十六进制数
…
第一个十进制数
第二个十进制数
…
3
1234
F8
AB12
4660
248
43794
#include
using namespace std;
#include
int factorial(int n) {
if (n == 0)
return 1;
int ans = 1;
for (int i = 2; i <= n; i++) {
ans *= i;
}
return ans;
}
int combinatorial_number(int m, int n) {
return factorial(m) / factorial(n) / factorial(m - n);
}
int main(){
int t;
cin >> t;
while (t--){
int m, n;
cin >> m >> n;
cout << combinatorial_number(m, n) << endl;
}
}