好像是做过的简单题。
#include
int main() {
int m, n;
scanf("%d", &m);
while (m--) {
scanf("%d", &n);
double ans = 0.0;
int flag = 1;
for (int i = 1; i <= n; i++) {
ans += flag * (1.0 / i);
flag = -flag;
}
printf("%.2lf\n", ans);
}
return 0;
}
#include
#include
bool isprime(int n) {
if (n <= 1) return false;
int sqr = (int)sqrt(1.0 * n);
for (int i = 2; i <= sqr; i++)
if (n % i == 0) return false;
return true;
}
int main() {
int x, y;
while (~scanf("%d%d", &x, &y) && (x || y)) {
int flag = 1;
for (int i = x; i <= y; i++) {
int num = i * i + i + 41;
if (!isprime(num)) {
printf("Sorry\n");
flag = 0; break;
}
}
if (flag) printf("OK\n");
}
return 0;
}
#include
int main() {
int n;
while (~scanf("%d", &n)) {
int ans = 1;
for (int i = 1; i < n; i++)
ans = 2 * ans + 2; //每天的前一天的桃子数目为该天*2+2
printf("%d\n", ans);
}
return 0;
}
#include
int main() {
int n;
while (~scanf("%d", &n)) {
int a[102], max = -1, min = 111, sum = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
sum += a[i]; //输入时处理
if (a[i] > max) max = a[i];
if (a[i] < min) min = a[i];
}
printf("%.2lf\n", 1.0 * (sum - max - min) / (n - 2));
}
return 0;
}
每一个循环节输出循环节中的偶数的平均值,如果最后一个循环节不满足有m个数,就按实际元素和的平均值。
#include
int main() {
int n, m;
while (~scanf("%d%d", &n, &m)) {
int cnt = 0, sum = 0, flag = 0;
for (int i = 2; i <= 2 * n; i += 2) {
cnt++; sum += i;
if (cnt == m) {
if (!flag) printf("%d", sum / m);
else printf(" %d", sum / m);
cnt = sum = 0;
flag = 1; //输出了一个数
} else if (cnt < m && i == 2 * n) {
if (!flag) printf("%d", sum / cnt); //输出第一个数就到了数列末尾
else printf(" %d", sum / cnt);
}
}
printf("\n");
}
return 0;
}
可能序列只有一个数。
#include
#include
using namespace std;
const int inf = 0x7fffffff;
int main() {
int n;
while (~scanf("%d", &n) && n) { //n != 0
int a[101], min = inf, j = -1;
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
if (a[i] < min) {
min = a[i];
j = i;
}
}
swap(a[0], a[j]);
for (int i = 0; i < n - 1; i++)
printf("%d ", a[i]);
printf("%d\n", a[n - 1]);
}
return 0;
}
#include
#include
#include
#include
using namespace std;
int main() {
int n;
string s;
scanf("%d", &n);
while (n--) {
cin >> s;
int ans = 0;
for (int i = 0; i < s.size(); i++)
if (isdigit(s[i])) ans++;
printf("%d\n", ans);
}
return 0;
}
这一题也可以预先打表。不过递推很简单就是了。
#include
#include
using namespace std;
int main()
{
int n, nums[60] = {0, 1, 2, 3}; //第一年1头母牛 n >= 4
for (int i = 4; i < 60; i++)
//这一年的母牛数量为去年的母牛数量+今年能够生育的母牛生育的数量
nums[i] = nums[i - 1] + nums[i - 3];
while (~scanf("%d", &n) && n)
printf("%d\n", nums[n]);
return 0;
}
按理说这道题应该用插入排序的思想;不过考虑是黑盒测试,可以直接输出小于m的数,然后输出m,然后输出大于m的数。
#include
int main() {
int n, m;
while (~scanf("%d%d", &n, &m) && (n || m)) {
int a[110], i;
for (i = 0; i < n; i++) scanf("%d", &a[i]);
for (i = 0; a[i] < m; i++) {
if (i != 0) printf(" ");
printf("%d", a[i]);
}
if (i != 0) printf(" %d", m); //不是第一个数
else printf("%d", m); //m小于所有的数列值
for (; i < n; i++) printf(" %d", a[i]);
printf("\n");
}
return 0;
}
#include
#include
using namespace std;
bool cmp(int a, int b) {
return abs(a) > abs(b);
}
int main() {
int n;
while (~scanf("%d", &n) && n) {
int a[110];
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
sort(a, a + n, cmp);
for (int i = 0; i < n - 1; i++) printf("%d ", a[i]);
printf("%d\n", a[n - 1]);
}
return 0;
}