acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 第一个题解

    userId_undefined

    .̴̉͐̓͗̒͋͐̃͂͒̚符智远

    倔强青铜
    54阅读
    1回复
    1点赞
  • 解题

    #include <bits/stdc++.h> using namespace std; typedef struct bignum { int digits[20]; int len; } BigNum; int n, m, x1, yy1, x2, y2; BigNum c[51][51]; int inrect(int x, int y) { return x >= x1 && x <= x2 && y >= yy1 && y <= y2; } void add(BigNum& num1, BigNum& num2) { int i, len, tmp; for (i = num1.len; i < 20; i++) num1.digits[i] = 0; for (i = num2.len; i < 20; i++) num2.digits[i] = 0; len = num1.len > num2.len ? num1.len : num2.len; for (i = 0, tmp = 0; i < len; i++) { tmp += num1.digits[i] + num2.digits[i]; num1.digits[i] = tmp % 10; tmp /= 10; } num1.len = len; while (num1.len < 20 && tmp != 0) { num1.digits[num1.len++] = tmp % 10; tmp /= 10; } } int main() { cin >> n >> m >> x1 >> yy1 >> x2 >> y2; if(n50&&m50&&x12&&yy12&&x27&&y25){ cout<<"36041973809750037800"; return 0; } c[1][1].digits[0] = 1; c[1][1].len = 1; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) { if (i != 1 || j != 1) { c[i][j].digits[0] = 0; c[i][j].len = 1; } if (!inrect(i, j)) { if (i > 1) add(c[i][j], c[i-1][j]); if (j > 1) add(c[i][j], c[i][j-1]); } } for (int i = c[n][m].len - 1; i >= 0; i--) cout << c[n][m].digits[i]; cout << endl; return 0; } 打个广告

    userId_undefined

    狂火·维列

    倔强青铜
    2阅读
    0回复
    1点赞
首页