Problem Descriptio
Given a positive integer N you will have to find two positive integers x and y such that:
N = x3 − y3
Input
The input file contains at most 100 lines of inputs. Each line contains a positive integer N (0 < N ≤ 10000). Input is terminated by a line containing a single zero. This line should not be processed.
Output
For each line of input produce one or more lines of output. Each of these lines contains two positive integers x, y separated by a single space, such that N = x3 − y3 . If there is no such integer values of x and y then produce the line ‘No solution’ instead. If there is more than one solution then output the one with smallest value of y.
Sample Input
7
37
12
0
Sample Output
2 1
4 3
No solution
source:https://uva.onlinejudge.org/external/114/11428.html
Given a positive integer N you will have to find two positive integers x and y such that:
N = x3 − y3
Input
The input file contains at most 100 lines of inputs. Each line contains a positive integer N (0 < N ≤ 10000). Input is terminated by a line containing a single zero. This line should not be processed.
Output
For each line of input produce one or more lines of output. Each of these lines contains two positive integers x, y separated by a single space, such that N = x3 − y3 . If there is no such integer values of x and y then produce the line ‘No solution’ instead. If there is more than one solution then output the one with smallest value of y.
Sample Input
7
37
12
0
Sample Output
2 1
4 3
No solution
Solution:
#include <algorithm> #include <cstdio> #include <cmath> #include <cstring> #include <deque> #include <fstream> #include <iostream> #include <list> #include <map> #include <queue> #include <set> #include <stack> #include <string> #include <vector> #include<stdio.h> #include<stdlib.h> using namespace std; int main() { long int n, x, y, i, j,value,get; float p, l; int start,limit; while(scanf("%ld",&n)==1) { if(n==0) break; get=0; limit=(int)sqrt(n); p=(float)1/3; start=(int)pow(n,p); for(i=start;i<=limit;i++) { for(j=1;j<=i;j++) { value=(i*i*i)-(j*j*j); if(n==value) { x=i; y=j; get=1; break; } } if(get==1) break; } if(get==1) printf("%ld %ld\n",x,y); else printf("No solution\n"); } return 0; }
No comments:
Post a Comment
Write your comment - Share Knowledge and Experience