Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma comment(linker, "/STACK:100000000")
- #include <iostream>
- #include <algorithm>
- #include <memory.h>
- #include <cstring>
- #include <sstream>
- #include <cstdlib>
- #include <complex>
- #include <string>
- #include <bitset>
- #include <vector>
- #include <cstdio>
- #include <ctime>
- #include <cmath>
- #include <queue>
- #include <stack>
- #include <set>
- #include <map>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- typedef unsigned long long ull;
- typedef complex < double > cd;
- const bool db = false;
- #define mp make_pair
- #define pb push_back
- #define ppb pop_back
- #define sd second
- #define fs first
- #define inf 1000000007
- #define nmax 100010
- #define mmax 500010
- #define pi acos(-1.0)
- #define eps 1e-7
- int n, m;
- vector < pair < int, int > > Fact;
- vector < pair < ll, ll > > Ans;
- void Rec(int pos, ll mul) {
- if(pos == Fact.size()) {
- Ans.pb(mp(mul + m, m * 1LL * m / mul + m));
- return;
- }
- Rec(pos + 1, mul);
- for(int j = 0; j < Fact[pos].sd; ++j) {
- mul *= Fact[pos].fs;
- Rec(pos + 1, mul);
- }
- }
- int main() {
- //freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
- //freopen("test.in", "r", stdin); freopen("test.out", "w", stdout);
- cin >> n; m = n;
- /*for(int i = 1; i <= n * n; ++i)
- if(n * n % i == 0) {
- cout << i + n << " " << n * n / i + n << endl;
- }*/
- for(int i = 2; i * i <= n; ++i)
- if(n % i == 0) {
- Fact.pb(mp(i, 0));
- while(n % i == 0) {
- ++Fact[Fact.size() - 1].sd;
- n /= i;
- }
- }
- if(n != 1)
- Fact.pb(mp(n, 1));
- for(int i = 0; i < Fact.size(); ++i)
- Fact[i].sd *= 2;
- Rec(0, 1);
- cout << Ans.size() << endl;
- for(int i = 0; i < Ans.size(); ++i)
- printf("%I64d %I64d\n", Ans[i].fs, Ans[i].sd);
- //while(1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement