#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int P = 2000;
int n, n3, p;
void init()
{
scanf("%d %d %d", &n, &n3, &p);
}
namespace sub1
{
struct Node
{
int a, b, c;
};
queue <Node> q;
void solve()
{
int cnt = 0;
for(int a = 1; a <= p; a++)
{
for(int b = 0; b <= p; b++)
{
for(int c = 1; c <= p; c++)
{
if((((ll)n * n + 1) % a + b) % c == n3)
{
cnt++;
if(cnt <= 100000)
{
q.push({a, b, c});
}
}
}
}
}
printf("%d\n", cnt);
while(q.size())
{
printf("%d %d %d\n", q.front().a, q.front().b, q.front().c);
q.pop();
}
}
}
int d[P + 5];
int di[P + 5][105];
namespace sub2
{
void solve()
{
d[0] = p;
for(int i = 1; i <= P; i++)
{
for(int j = 1; j <= i; j++)
{
if(i % j == 0)
{
d[i]++;
di[i][d[i]] = j;
}
}
}
for(int i = 1; i <= 100; i++)
{
printf("%d ", i);
for(int j = 1; j <= d[i]; j++)
{
printf("%d ", di[i][j]);
}
printf("\n");
}
ll sum = 0;
for(int a = 1; a <= p; a++)
{
for(int b = 0; b <= p; b++)
{
int n2 = (int)(((ll)n * n + 1) % a + b);
if(n2 < n3)
{
continue;
}
if(n2 == n3)
{
sum += (ll)p - n3;
}
else
{
int j = n2 - n3;
int x = upper_bound(di[j] + 1, di[j] + d[j] + 1, n3) - di[j];
int y = upper_bound(di[j] + 1, di[j] + d[j] + 1, p) - di[j];
printf("%d 111 %d\n", x, y);
sum += (ll)y - x;
}
}
}
printf("%lld\n", sum);
printf("114514\n");
int cnt = 0;
for(int a = 1; a <= p; a++)
{
for(int b = 0; b <= p; b++)
{
int n2 = (int)(((ll)n * n + 1) % a + b);
if(n2 < n3)
{
continue;
}
if(n2 == n3)
{
if(cnt <= 100000)
{
for(int i = n3 + 1; i <= p; i++)
{
cnt++;
if(cnt <= 100000)
printf("%d %d %d\n", a, b, i);
}
}
}
else
{
int j = n2 - n3;
int x = upper_bound(di[j] + 1, di[j] + d[j] + 1, n3) - di[j];
int y = upper_bound(di[j] + 1, di[j] + d[j] + 1, p) - di[j];
if(cnt <= 100000)
{
for(int i = x; i < y; i++)
{
printf("%d\n", i);
cnt++;
if(cnt <= 100000)
printf("%d %d %d\n", a, b, di[j][i]);
}
}
}
}
}
}
}
void solve()
{
if(p <= 100)
{
sub1::solve();
}
else
{
sub2::solve();
}
}
int main()
{
// freopen("enumerate.in", "r", stdin);
freopen("enumerate111.out", "w", stdout);
init();
solve();
return 0;
}
输入:
196 31 1857
运行到 100 行左右 RE 了