2041 超级楼梯
超级楼梯
需要重视
递推求解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
#include <stdio.h>
int main(int argc, const char * argv[]) { int n, m, steps[105], maxM = 2; steps[1] = 1; steps[2] = 1;
scanf("%d", &n); while (n--) { scanf("%d", &m); if (maxM < m) { for (int i=3; i<=m; i++) { steps[i] = steps[i-1] + steps[i-2]; } maxM = m; } printf("%d\n", steps[m]); } return 0; }
|
2043 密码
密码不是递推
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include <stdio.h> #include <string.h>
int main(int argc, const char * argv[]) { int n; char s[105]; scanf("%d", &n); while (n--) { int check[4] = {0, 0, 0, 0}; scanf("%s", s); if (strlen(s) >= 8 && strlen(s) <= 16) { for (int i=0; i<strlen(s); i++) { if (s[i] >= 'A' && s[i] <= 'Z') check[0] = 1; else if (s[i] >= 'a' && s[i] <= 'z') check[1] = 1; else if (s[i] >= '0' && s[i] <= '9') check[2] = 1; else if (s[i] == '~' || s[i] == '!' || s[i] == '@' || s[i] == '#' || s[i] == '$' || s[i] == '%' || s[i] == '^') check[3] = 1; } if ((check[0] + check[1] + check[2] + check[3]) >= 3) printf("YES\n"); else printf("NO\n"); } else printf("NO\n"); } return 0; }
|
2044 一只小蜜蜂
2044 一只小蜜蜂
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| #include <stdio.h> #include <string.h>
int main(int argc, const char * argv[]) {
int n, a, b; long long int f[105];
scanf("%d", &n);
while (n--) { scanf("%d %d", &a, &b);
f[a] = 1; f[a+1] = 1;
for (int i=a+2; i<=b; i++) { f[i] = f[i-1] + f[i-2]; }
printf("%lld\n", f[b]); }
return 0; }
|
2045 不容易系列之(3)—— LELE的RPG难题
不容易系列之(3)—— LELE的RPG难题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#include <stdio.h>
int main(int argc, const char * argv[]) {
int n; long long res[105] = {3, 6, 6}; while (scanf("%d", &n) != EOF) { for (int i=3; i<n; i++) { res[i] = res[i-1] + res[i-2] * 2; } printf("%lld\n", res[n-1]); }
return 0; }
|
2046 骨牌铺方格
骨牌铺方格
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <stdio.h>
int main(int argc, const char * argv[]) {
int n, maxN = 2; long long int f[60]; f[1] = 1; f[2] = 2; while(scanf("%d", &n) != EOF) { if (maxN < n) { for (int i=maxN+1; i<=n; i++) { f[i] = f[i-1] + f[i-2]; } maxN = n; } printf("%lld\n", f[n]); }
return 0; }
|
2047阿牛的EOF牛肉串
2047阿牛的EOF牛肉串
注意思想与2045 不容易系列之(3)—— LELE的RPG难题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
#include <stdio.h>
int main(int argc, const char * argv[]) {
int n, maxN = 2; long long int f[60]; f[1] = 3; f[2] = 8; while(scanf("%d", &n) != EOF) { if (maxN < n) { for (int i=maxN+1; i<=n; i++) { f[i] = 2*(f[i-1] + f[i-2]); } maxN = n; } printf("%lld\n", f[n]); }
return 0; }
|
2048 神、上帝以及老天爷
神、上帝以及老天爷
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
#include <stdio.h>
long long int jieceng(int n) { long long sum = 1; while (n) { sum *= n; n--; }
return sum; }
int main(int argc, const char * argv[]) {
int n, m, maxN = 2; double f[60]; f[1] = 0; f[2] = 1; scanf("%d", &m); while (m--) { scanf("%d", &n); if (maxN < n) { for (int i=maxN+1; i<=n; i++) { f[i] = (i-1)*(f[i-1] + f[i-2]); } maxN = n; }
printf("%.2lf%%\n", f[n]*100.0/jieceng(n)); }
return 0; }
|
2049 不容易系列之(4)——考新郎
不容易系列之(4)——考新郎
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#include <stdio.h>
long long int jieceng(int n) { long long sum = 1; while (n) { sum *= n; n--; } return sum; }
long long CMethod(int n, int a) { long long int sum = 1; for (int i=n; i>n-a; i--) { sum *= i; } for (int i=1; i<=a; i++) { sum /= i; } return sum; }
int main(int argc, const char * argv[]) {
int c, n, m, maxN = 2; long long int f[60]; scanf("%d", &c); while (c--) { f[1] = 0; f[2] = 1; scanf("%d %d", &n, &m); if (maxN < m) { for (int i=maxN+1; i<=m; i++) { f[i] = (i-1)*(f[i-1] + f[i-2]); } maxN = m; } f[1] = 1; printf("%lld\n", CMethod(n, n-m) *f[m]); }
return 0; }
|
2050 折线分割平面
折线分割平面
折线分割平面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#include <stdio.h>
int main(int argc, const char * argv[]) {
int c, n;
scanf("%d", &c); while (c--) { scanf("%d", &n); printf("%d\n", 2 * n * n - n + 1); }
return 0; }
|