P5716 [深基3.例9] 月份天数
#include <cstdio>
int main()
{
int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int y, m;
scanf("%d%d", &y, &m);
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) days[1] = 29;
printf("%d\n", days[m - 1]);
return 0;
}
P1046 [NOIP2005 普及组] 陶陶摘苹果
#include <cstdio>
int main()
{
int h[10];
for (int i = 0; i < 10; i++) scanf("%d", &h[i]);
int t;
scanf("%d", &t);
int ans = 0;
for (int i = 0; i < 10; i++) {
if (t + 30 >= h[i]) ans++;
}
printf("%d\n", ans);
return 0;
}
P1089 [NOIP2004 提高组] 津津的储蓄计划
#include <cstdio>
int main()
{
int b[13];
for (int i = 1; i <= 12; i++) {
scanf("%d", &b[i]);
}
int save = 0;
int money = 0;
for (int i = 1; i <= 12; i++) {
money += 300;
money -= b[i];
if (money < 0) {
printf("%d\n", -i);
break;
}
save += money / 100 * 100;
money = money % 100;
}
if (money >= 0) {
money += save / 5 * 6;
printf("%d\n", money);
}
return 0;
}
P1428 小鱼比可爱
#include <cstdio>
int main()
{
int n;
scanf("%d", &n);
int a[105];
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
for (int i = 1; i <= n; i++) {
int x = 0;
for (int j = 1; j < i; j++) {
if (a[j] < a[i]) ++x;
}
printf("%d ", x);
}
return 0;
}
P1427 小鱼的数字游戏
#include <cstdio>
int main()
{
int x;
int a[105];
int len = 0;
while (scanf("%d", &x)) {
if (x == 0) break;
a[++len] = x;
}
for (int i = len; i >= 1; i--) printf("%d ", a[i]);
return 0;
}
P5727 [深基5.例3] 冰雹猜想
#include <cstdio>
int main()
{
int n;
scanf("%d", &n);
int a[1000];
int len = 0;
while (n != 1) {
a[++len] = n;
if (n % 2 == 1) n = 3 * n + 1;
else n = n / 2;
}
printf("1");
for (int i = len; i >= 1; i--) printf(" %d", a[i]);
return 0;
}
P1047 [NOIP2005 普及组] 校门外的树
#include <cstdio>
int main()
{
int l, m;
int road[10005];
scanf("%d%d", &l, &m);
for (int i = 0; i <= l; i++) road[i] = 1;
for (int i = 0; i < m; i++) {
int u, v;
scanf("%d%d", &u, &v);
for (int j = u; j <= v; j++) road[j] = 0;
}
int ans = 0;
for (int i = 0; i <= l; i++) ans += road[i];
printf("%d\n", ans);
return 0;
}
P5728 [深基5.例5] 旗鼓相当的对手
#include <cstdio>
int c[1005], m[1005], e[1005];
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; ++i)
scanf("%d%d%d", &c[i], &m[i], &e[i]);
int ans = 0;
for (int i = 0; i < n; ++i)
for (int j = i + 1; j < n; ++j) {
int dc = c[i] - c[j];
int dm = m[i] - m[j];
int de = e[i] - e[j];
int dsum = (c[i] + m[i] + e[i]) - (c[j] + m[j] + e[j]);
if (dc >= -5 && dc <= 5)
if (dm >= -5 && dm <= 5)
if (de >= -5 && de <= 5)
if (dsum >= -10 && dsum <= 10)
ans++;
}
printf("%d\n", ans);
return 0;
}
P5729 [深基5.例7] 工艺品制作
#include <cstdio>
int a[25][25][25];
int main()
{
int w, x, h;
scanf("%d%d%d", &w, &x, &h);
int q;
scanf("%d", &q);
int cur = w * x * h;
while (q > 0) {
q--;
int x1, y1, z1, x2, y2, z2;
scanf("%d%d%d%d%d%d", &x1, &y1, &z1, &x2, &y2, &z2);
for (int i = x1; i <= x2; ++i)
for (int j = y1; j <= y2; ++j)
for (int k = z1; k <= z2; ++k) {
if (a[i][j][k] == 0) --cur;
a[i][j][k] = 1;
}
}
printf("%d\n", cur);
return 0;
}
P2550 [AHOI2001] 彩票摇奖
#include <cstdio>
int main()
{
int n;
scanf("%d", &n);
int num[35] = {0};
int award[10] = {0};
for (int i = 0; i < 7; i++) {
int id;
scanf("%d", &id);
num[id] = 1;
}
for (int i = 0; i < n; i++) {
int hit = 0;
for (int j = 0; j < 7; j++) {
int id;
scanf("%d", &id);
if (num[id] == 1) hit++;
}
award[7 - hit]++;
}
for (int i = 0; i <= 6; i++) printf("%d ", award[i]);
return 0;
}
P1554 梦中的统计
#include <cstdio>
int main()
{
int m, n;
scanf("%d%d", &m, &n);
int cnt[10] = {0};
for (int i = m; i <= n; i++) {
int t = i;
while (t > 0) {
cnt[t % 10]++;
t = t / 10;
}
}
for (int i = 0; i <= 9; i++) printf("%d ", cnt[i]);
return 0;
}
P1614 爱与愁的心痛
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 3005;
const int INF = 1e9;
int a[MAXN];
int main()
{
int n, m;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
int ans = INF;
for (int i = 1; i <= n - m + 1; i++) {
int sum = 0;
for (int j = i; j < i + m; j++) sum += a[j];
ans = min(ans, sum);
}
printf("%d\n", ans);
return 0;
}
P2911 [USACO08OCT] Bovine Bones G
#include <cstdio>
int main()
{
int cnt[100] = {0};
int s1, s2, s3;
scanf("%d%d%d", &s1, &s2, &s3);
for (int i = 1; i <= s1; ++i)
for (int j = 1; j <= s2; ++j)
for (int k = 1; k <= s3; ++k)
cnt[i + j + k]++;
int ans = 3, mx = 0;
for (int i = 3; i <= s1 + s2 + s3; ++i) {
if (cnt[i] > mx) {
mx = cnt[i];
ans = i;
}
}
printf("%d\n", ans);
return 0;
}
P5731 [深基5.习6] 蛇形方阵
#include <cstdio>
int main()
{
int n;
scanf("%d", &n);
int s[10][10] = {0};
int x = 1;
int y = 1;
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int d = 0; // 右0下1左2上3,当前方向为右
s[1][1] = 1;
int num = 2;
while (num <= n * n) {
int xx = x + dx[d];
int yy = y + dy[d];
if (xx >= 1 && xx <= n && yy >= 1 && yy <= n && s[xx][yy] == 0) {
x = xx;
y = yy;
s[x][y] = num;
num++;
} else {
d = (d + 1) % 4;
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) printf("%3d", s[i][j]);
printf("\n");
}
return 0;
}
P5732 [深基5.习7] 杨辉三角
#include <cstdio>
int main()
{
int n;
int a[25][25] = {0};
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
a[i][1] = 1;
a[i][i] = 1;
for (int j = 2; j <= i - 1; j++)
a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
P1789 [Mc生存] 插火把
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
int mp[105][105] = {0};
int n, m, k;
scanf("%d%d%d", &n, &m, &k);
for (int i = 0; i < m; ++i) {
int x, y;
scanf("%d%d", &x, &y);
mp[x][y] = true;
for (int j = max(x - 2, 1); j <= min(x + 2, n); ++j) mp[j][y] = 1;
for (int j = max(y - 2, 1); j <= min(y + 2, n); ++j) mp[x][j] = 1;
for (int a = max(x - 1, 1); a <= min(x + 1, n); ++a)
for (int b = max(y - 1, 0); b <= min(y + 1, n); ++b)
mp[a][b] = 1;
}
for (int i = 0; i < k; ++i) {
int x, y;
scanf("%d%d", &x, &y);
for (int a = max(x - 2, 1); a <= min(x + 2, n); ++a)
for (int b = max(y - 2, 1); b <= min(y + 2, n); ++b)
mp[a][b] = 1;
}
int ans = 0;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
if (mp[i][j] == 0) ++ans;
printf("%d\n", ans);
return 0;
}
P1319 压缩技术
#include <cstdio>
int main()
{
int n;
scanf("%d", &n);
int num = 0;
int x;
int cnt = 0, sum = 0;
while (sum != n * n) {
scanf("%d", &x);
for (int j = 0; j < x; j++) {
printf("%d", num);
cnt++;
if (cnt == n) {
printf("\n");
cnt = 0;
}
}
num = 1 - num;
sum += x;
}
return 0;
}
P2615 [NOIP2015 提高组] 神奇的幻方
#include <cstdio>
int ans[50][50];
int main()
{
int n;
scanf("%d", &n);
int x = 1, y = (n + 1) / 2;
ans[x][y] = 1;
for (int i = 2; i <= n * n; ++i) {
if (x == 1 && y < n) {
x = n;
++y;
} else if (y == n && x > 1) {
y = 1;
--x;
} else if (x == 1 && y == n) {
++x;
} else if (x != 1 && y != n) {
if (ans[x - 1][y + 1] == 0) {
--x;
++y;
} else ++x;
}
ans[x][y] = i;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) printf("%d ", ans[i][j]);
printf("\n");
}
return 0;
}
P2141 [NOIP2014 普及组] 珠心算测验
#include <cstdio>
int main()
{
int n;
scanf("%d", &n);
int a[105];
int b[10005] = {0};
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
b[a[i]] = 1;
}
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int sum = a[i] + a[j];
if (sum <= 10000 && b[sum] == 1) {
ans++;
b[sum]++; //若有好几种方案能加出同一个数字,按题意只计一次答案
}
}
}
printf("%d\n", ans);
return 0;
}