1.找最小值
题目描述
给出 n 和 n 个整数 ai,求这 n 个整数中最小值是什么。
输入格式
第一行输入一个正整数 n,表示数字个数。
第二行输入 n 个非负整数,表示 a1,a2…an,以空格隔开。
输出格式
输出一个非负整数,表示这 n 个非负整数中的最小值。
输入输出样例
输入 #1
8 1 9 2 6 0 8 1 7输出 #1
0
#include<iostream>
using namespace std;
const int N = 110;
int a[N];
int main()
{int n; cin >> n; for (int i = 1; i <= n; i++)cin >> a[i];int min = a[1];for (int i = 2; i <= n; i++){if (a[i] < min)min = a[i];}cout << min;return 0;
}
2.分类平均
题目描述
给定 n 和 k,将从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k 整除(也就是说是 k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 位,用空格隔开。
数据保证两类数的个数都不会是 0。
输入格式
输入两个正整数 n 与 k。
输出格式
输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。
输入输出样例
输入 #1
100 16输出 #1
56.0 50.1
#include<iostream>
using namespace std;
const int N = 110;
int a[N];
int main()
{int n, k; cin >> n >> k;int a = 0, b = 0;//a b 类int cnt1 = 0, cnt2 = 0;for (int i = 1; i <= n; i++){if (i % k == 0){a += i;cnt1++;}else{b += i;cnt2++;}}double ans1 = a*1.0 / cnt1, ans2 = b*1.0 / cnt2;printf("%.1lf %.1lf", ans1, ans2);return 0;
}
3.一尺之棰
题目描述
《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除 2,向下取整)。第几天的时候木棍的长度会变为 1?
输入格式
输入一个正整数 a,表示木棍长度。
输出格式
输出一个正整数,表示要第几天的时候木棍长度会变为 1。
输入输出样例
输入 #1
100输出 #1
7说明/提示
数据保证,1≤a≤109。
#include<iostream>
using namespace std;
const int N = 110;
int a[N];
int main()
{int a; cin >> a;int i = 1;while (a > 1){a /= 2;i++;}cout << i;return 0;
}
4.数字直角三角形
题目描述
给出 n,请输出一个直角边长度是 n 的数字直角三角形。所有数字都是 2 位组成的,如果没有 2 位则加上前导 0。
输入格式
输入一个正整数 n。
输出格式
输出如题目要求的数字直角三角形。
输入输出样例
输入 #1
5输出 #1
0102030405 06070809 101112 1314 15
#include<iostream>
using namespace std;
const int N = 110;
int a[N];
int main()
{int n, cnt = 0; cin >> n;for (int i = 1; i <= n; i++){for (int j = i; j <= n; j++){cnt++;if (cnt < 10){cout << "0";}cout << cnt;}cout << endl;}return 0;
}
5.阶乘之和(高精度,这题先空着)
题目描述
用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)。
其中
!
表示阶乘,定义为 n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5×4×3×2×1=120。
输入格式
一个正整数 n。
输出格式
一个正整数 S,表示计算结果。
输入输出样例
输入 #1
3输出 #1
9
6.计数问题
题目描述
试计算在区间 1 到 n 的所有整数中,数字 x(0≤x≤9)共出现了多少次?例如,在 1 到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。
输入格式
2 个整数 n,x,之间用一个空格隔开。
输出格式
1 个整数,表示 x 出现的次数。
输入输出样例
输入 #1
11 1输出 #1
4
#include<iostream>
using namespace std;
int main()
{int n, x; cin >> n >> x;int cnt = 0;for (int i = 1; i <= n; i++){int j = i;while (j != 0){if (j % 10 == x)cnt++;j /= 10;}}cout << cnt << endl;return 0;
}
7.级数求和
题目描述
已知:Sn=1+1/2+1/3+…+1/n。显然对于任意一个整数 k,当 n 足够大的时候,Sn>k。
现给出一个整数 k,要求计算出一个最小的 n,使得 Sn>k。
输入格式
一个正整数 k。
输出格式
一个正整数 n。
输入输出样例
输入 #1
1输出 #1
2说明/提示
【数据范围】
对于 100% 的数据,1≤k≤15。
#include<iostream>
using namespace std;int main()
{int i,k; cin >> k;double sn = 0.0;for (i = 1; sn <= k; i++){sn += 1.0 / i;}cout << i - 1;return 0;
}
8.金币
题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 n 天每天收到 n 枚金币后,骑士会在之后的连续 n+1 天里,每天收到 n+1 枚金币。
请计算在前 k 天里,骑士一共获得了多少金币。
输入格式
一个正整数 k,表示发放金币的天数。
输出格式
一个正整数,即骑士收到的金币数。
输入输出样例
输入 #1
6输出 #1
14输入 #2
1000输出 #2
29820
#include<iostream>
using namespace std;int main()
{int k,c = 1; cin >> k; int sum = 0;//c为增加的金币数量/*1+2+2+3+3+3*/for (int i = 1; i <= k; i++){k -= i; sum += c * c; c++;}cout << sum + k * c;return 0;
}
9.数列求和
题目描述
计算 1+2+3+⋯+(n−1)+n 的值,其中正整数 n 不大于 100。由于你没有高斯聪明,所以你不被允许使用等差数列求和公式直接求出答案。
输入格式
输入一个正整数 n。
输出格式
输出一个正整数,表示最后求和的答案。
输入输出样例
输入 #1
100输出 #1
5050
#include<iostream>
using namespace std;
int s(int n)
{int sum = 0;for (int i = 1; i <= n; i++){sum += i;}return sum;
}
int main()
{int n; cin >> n;cout << s(n);return 0;
}
10.质数口袋
题目描述
小 A 有一个质数口袋,里面可以装各个质数。他从 2 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。
口袋的负载量就是口袋里的所有数字之和。
但是口袋的承重量有限,装的质数的和不能超过 L。给出 L,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数的个数,数字之间用换行隔开。
输入格式
一行一个正整数 L。
输出格式
将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。
输入输出样例
输入 #1
100输出 #1
2 3 5 7 11 13 17 19 23 9输入 #2
5输出 #2
2 3 2输入 #3
11输出 #3
2 3 5 3
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int iszs(int n)
{for (int i = 2; i < n; i++){if (n % i == 0)return 0;}return 1;//是质数
}
int main()
{int l; cin >> l; int sum = 0; int i = 1; int k = 0;while (sum < l){i++;if (iszs(i)){sum += i;k++;a[k] = i;}}if (sum > l)k--;for (int i = 1; i <= k; i++)cout << a[i] << endl;cout << k;return 0;
}