Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <iomanip>
- #define NMax 105
- using namespace std;
- typedef int HUGE[NMax];
- int i;
- char c;
- HUGE v,u;
- void sum(HUGE A, HUGE B);
- int binSearch(HUGE A, HUGE B)
- {
- HUGE mid = (sum(A,B));
- atrib(mid, sum(A,B));
- if(compare(mult(mid, mid), v)==1 || compare(mult(mid, mid), v)==0) //daca mid la patrat este mai mare decat v atunci mid-- si e val gasita
- {
- subs(mid, 1);
- return mid;
- }else
- {
- return binSearch(mid, B);
- }
- }
- void sum(HUGE A, HUGE B)
- {
- if(compare(A,B)==-1)
- return sum(B,A);
- else
- {
- HUGE Sum;
- for(i=1; i<=A[0]; i++)
- {
- int aux = A[i] + B[i];
- Sum[i] = aux%10;
- Sum[i+1]+=aux/10;
- }
- return Sum;
- }
- }
- void read()
- {
- v[0]=0;
- i=1;
- while(scanf("%c",&c)==1)
- {v[i] = c-'0'; v[0]++;i++;}
- v[0]--;
- int st=1, dr=v[0];
- while(st<dr)
- swap(v[st], v[dr]), st++, dr--;
- }
- int main()
- {
- freopen("free.in","r", stdin);
- freopen("free.out","w", stdout);
- read();
- binSearch(v, u);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement