社区讨论

为啥我用的高精度却过不了

P1591阶乘数码参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mj5yd7d9
此快照首次捕获于
2025/12/15 00:42
2 个月前
此快照最后确认于
2025/12/18 14:40
2 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int s[1001];
int ls;
void mul(int t) {
  for (int i = 0; i < ls; i++) {
    s[i] *= t;
  }
  for (int i = 0; i < ls; i++) {
    s[i + 1] += s[i] / 10;
    s[i] %= 10;
  }

  int i = ls;
  while (s[i] >0) {
    s[i + 1] += s[i] / 10;
    s[i] %= 10;
    i++;
  }
  ls = i;
}

void chen() {
  int n, m;
  cin >> n >> m;
  fill(s, s + 1001, 0);
  s[0] = 1;
  ls = 1;
  for (int i = 2; i <= n; i++) {
    mul(i);
  }

  int ans = 0;
  for (int i = 0; i < ls; i++) {
    cout<<s[i];
    if (s[i] == m) {
      ans++;
    }
  }
  cout<<endl;
  cout << ans << endl;
}

int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  int _;
  cin >> _;
  while (_--) {
    chen();
  }
  return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...