結果
| 問題 | No.1409 Simple Math in yukicoder | 
| コンテスト | |
| ユーザー |  m_tsubasa | 
| 提出日時 | 2021-02-26 23:00:11 | 
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) | 
| 結果 | 
                                TLE
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,586 bytes | 
| コンパイル時間 | 2,003 ms | 
| コンパイル使用メモリ | 199,080 KB | 
| 最終ジャッジ日時 | 2025-01-19 06:38:00 | 
| ジャッジサーバーID (参考情報) | judge4 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 5 TLE * 53 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
vector<int> fact(int p) {
  vector<int> res;
  for (int i = 2; i * i <= p; ++i) {
    res.push_back(i);
    while (p % i == 0) p /= i;
  }
  if (p > 1) res.push_back(p);
  return res;
}
long long modpow(long long b, long long x, long long mod) {
  long long res = 1;
  while (x) {
    if (x & 1) (res *= b) %= mod;
    (b *= b) %= mod;
    x >>= 1;
  }
  return res;
}
int x, v;
vector<int> res;
int calc(int p, vector<int>& vec) {
  int res = x * v, pr = x * v + 1;
  for (auto x : vec) {
    while (res % x == 0 && modpow(p, res / x, pr) == 1) res /= x;
  }
  return res;
}
vector<vector<int>> memo;
void dfs(int now = 0, int par = 0);
int main() {
  int t;
  cin >> t;
  while (t--) {
    cin >> v >> x;
    vector<int> res;
    int pr = v * x + 1;
    for (int i = 1; i <= x * v; ++i) {
      long long p = 1;
      bool ch = 0;
      for (int j = 0; j < x; ++j)
        if (((p *= i) %= pr) == 1) {
          ch = x % (j + 1) == 0;
          break;
        }
      if (ch) res.push_back(i);
    }
    for (int i = 0; i < x; ++i) cout << res[i] << " \n"[i == x - 1];
  }
  return 0;
}
void dfs(int now, int par) {
  if (now == x) {
    vector<long long> vec(x, 1);
    for (int i = 0; i < x; ++i) {
      long long sum = 0;
      for (int j = 0; j < x; ++j) sum += (vec[j] *= res[j]);
      if (sum % (v * x + 1) != (i == x - 1 ? x : 0)) return;
    }
    for (auto p : res) cout << p << " ";
    cout << endl;
    return;
  }
  int xv = x * v;
  for (int i = par + 1; i <= xv; ++i) {
    res[now] = i;
    dfs(now + 1, i);
  }
}
            
            
            
        