#include <iostream> using namespace std; bool check_if_divisor(uint32_t n, uint32_t a) { if (n%a==0) return true; else return false; } int main() { uint32_t n, a, k, m, suma, n2, k2, m2; // n = a+b+c = a(1+k(1+m)), gdzie b=k*a, c=m*k*a i k>1 i m>1 // // debug /////////// // for (int ii=0; ii<100; ii++) // { // // ////////////////// cin>>n; suma=0; for (a=1; a<=n/7; a++) if (check_if_divisor(n,a)) { n2 = n/a-1; // n2=k*(m+1), k>=2 i m>=2 // for (k=2; k<=n2/3; k++) for (k=2; k*k<=n2; k++) if (check_if_divisor(n2, k)) { // first solution m = n2/k-1; if (m>1) { suma++; } // second solution k2 = n2/k; m2 = k-1; // = n2/k2-1 if (k2!=k && m2>1) { suma++; } } } cout << suma<<endl; // // debug //////////// // } // // ////////////////// return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include <iostream> using namespace std; bool check_if_divisor(uint32_t n, uint32_t a) { if (n%a==0) return true; else return false; } int main() { uint32_t n, a, k, m, suma, n2, k2, m2; // n = a+b+c = a(1+k(1+m)), gdzie b=k*a, c=m*k*a i k>1 i m>1 // // debug /////////// // for (int ii=0; ii<100; ii++) // { // // ////////////////// cin>>n; suma=0; for (a=1; a<=n/7; a++) if (check_if_divisor(n,a)) { n2 = n/a-1; // n2=k*(m+1), k>=2 i m>=2 // for (k=2; k<=n2/3; k++) for (k=2; k*k<=n2; k++) if (check_if_divisor(n2, k)) { // first solution m = n2/k-1; if (m>1) { suma++; } // second solution k2 = n2/k; m2 = k-1; // = n2/k2-1 if (k2!=k && m2>1) { suma++; } } } cout << suma<<endl; // // debug //////////// // } // // ////////////////// return 0; } |