Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef double ld;//%Lf
- #define ff first
- #define ss second
- #define pb push_back
- #define mp make_pair
- #define ppb pop_back
- #define in insert
- #define sz(a) int((a).size())
- #define vi vector<int>
- #define vl vector<ll>
- #define vvi vector<vector<int> >
- #define pii pair<int,int>
- #define piii pair<int,pair<int,int> >
- #define pll pair<ll,ll>
- #define vii vector<pii>
- #define vll vector<pll>
- #define viii vector<piii>
- #define YES cout << "YES\n"
- #define NO cout << "NO\n"
- #define scl(n) scanf("%lld",&n)
- #define scll(x,y) scanf("%lld %lld",&x,&y)
- #define gtl(x) getline(cin, (x))
- #define f0(b) for(int i=0;i<(b);i++)
- #define f00(b) for(int j=0;j<(b);j++)
- #define f1(b) for(int i=1;i<=(b);i++)
- #define f11(b) for(int j=1;j<=(b);j++)
- #define f2(a,b) for(int i=(a);i<=(b);i++)
- #define f22(a,b) for(int j=(a);j<=(b);j++)
- #define RFOR(i,x,y) for(int i=x;i>=y;i--)
- #define all(v) v.begin(),v.end()
- #define rall(v) v.rbegin(),v.rend()
- #define unq(v) sort(all(v)),(v).resize(unique(all(v))-v.begin())
- #define present(c,x) ((c).find(x) != (c).end())
- #define cpresent(c,x) (find(all(c),x) != (c).end())
- #define min_ele(v) (*min_element(all(v)))
- #define max_ele(v) (*max_element(all(v)))
- #define cnt_ele(v, x) (count(all(v), x))
- #define sum_ele(v) (accumulate(all(v),0))
- #define reversed(s) reverse(s.begin(), s.end())
- #define testcase ll t; cin>>t; while (t--)
- #define vout(v) for(int ind=0;ind<v.size();ind++){ cout<<v[ind]; if(ind<v.size()-1) cout<<' '; else cout<<endl;}
- #define arrout(arr,i,x,y) for(int i=x;i<=y;i++){ cout<<arr[i]; if(i<y) cout<<' '; else cout<<endl;}
- #define PI acos(-1)
- #define CLR(x, y) memset(x, y, sizeof(x))
- #define Precision(a) cout << fixed << setprecision(a)
- #define BITCH_FAST() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0) //Don't use scanf/printf
- #define MAXP 1000006
- #define INF9 2147483647
- #define INF18 9223372036854775806
- #define MOD 1e9+7//10000007 // For big mod
- #define EPS 1e-7
- template <typename T> T Sqr(T x) { T n = x * x ; return n ;}
- template <typename T> T Pow(T B,T P){ if(P==0) return 1; if(P&1) return B*Pow(B,P-1); else return Sqr(Pow(B,P/2));}
- template <typename T> T Abs(T a) {if(a<0)return -a;else return a;}
- template <typename T> T Gcd(T a,T b){if(a<0)return Gcd(-a,b);if(b<0)return Gcd(a,-b);return (b==0)?a:Gcd(b,a%b);} // better than __gcd
- template <typename T> T Lcm(T a,T b) {if(a<0)return Lcm(-a,b);if(b<0)return Lcm(a,-b);return a*(b/Gcd(a,b));}
- template <typename T> T power(T n, T p){ T res = 1;while(p > 0){if(p & 1)res *= n;n *= n;p >>= 1;}return res;}
- template <typename T> T BigMod (T b,T p,T m){if (p == 0) return 1;if (p%2 == 0){T s = BigMod(b,p/2,m);return ((s%m)*(s%m))%m;}return ((b%m)*(BigMod(b,p-1,m)%m))%m;}
- template <typename T> inline string ToBinary(T n) {string r ;while(n != 0) {r = ( n % 2 == 0 ? "0" : "1" ) + r ; n >>= 1;} return r ;}
- long long BinaryToDecimal(string s) {int len = s.size();long long n = 0, p = 1;for (int i = len - 1; i >= 0; i-- , p *= 2) n += p * (s[i] - '0');return n;}
- int Strtoint(string str){stringstream ss(str);int x = 0;ss >> x ;return x ;}
- string Intostr(int x){stringstream ss; ss << x; string str = ss.str(); return str;}
- /*----------------------Graph Moves----------------*/
- int ROW[]={+1,-1,+0,+0};
- int COL[]={+0,+0,+1,-1};
- int X[]={+0,+0,+1,-1,-1,+1,-1,+1}; // Kings Move
- int Y[]={-1,+1,+0,+0,+1,+1,-1,-1}; // Kings Move
- int KX[]={-2, -2, -1, -1, 1, 1, 2, 2}; // Knights Move
- int KY[]={-1, 1, -2, 2, -2, 2, -1, 1}; // Knights Move
- ll phi(ll n)
- {
- ll x=n;
- for(ll i=2; i*i<=n; i++)
- {
- if(n%i==0)
- {
- while(n%i==0)
- {
- n/=i;
- }
- x-=x/i;
- }
- }
- if(n>1)
- {
- x-=x/n;
- }
- return x;
- }
- Case handle: if(n==1) cout << 0 << endl// after code start delete this
- int ND[MAXP+2];
- void NOD()
- {
- for(int i=1; i<=MAXP; i++)
- {
- for(int j=i; j<=MAXP; j+=i)
- {
- ND[j]++;
- }
- }
- }
- ll DigitSum(ll x)
- {
- ll sum=0;
- while(x>0)
- {
- sum+=x%10;
- x/=10;
- }
- return sum;
- }
- void printBinary(int num)
- {
- for(int i=10; i>=0; --i)
- {
- cout << ((num >> i) & 1);
- }
- cout << endl;
- }
- bool IsPalindrome(string s)
- {
- int N = s.size();
- for ( int i = 0; i < N / 2; i++)
- {
- if (s[i] != s[N - 1 - i]) return 0;
- }
- return 1;
- }
- string toBinary(ll n){
- string s;
- if(n==0) s.push_back('0');
- while(n){
- if(n%2==0) s.push_back('0');
- else s.push_back('1');
- n/=2;
- }
- return s;
- }
- Int main{
- string a,b;
- cin>>a>>b;
- // ***BINARY CONVERSION***
- a = toBinary(A);
- b = toBinary(B);
- //-------------------------
- }
- ll toInt(string s){
- ll digit=0,ans=0;
- for(ll i=s.length()-1;i>=0;i--){
- ans+=pow(16,digit++)*m[s[i]];
- }
- return ans;
- }
- Int main{
- string a,b;
- cin>>a>>b;
- // ***DECIMAL CONVERSION***
- ll A = toInt(a);
- ll B = toInt(b);
- //****************
- }
- string fib[MAXP];
- string Add_sum(string str1,string str2)
- {
- if (str1.length() > str2.length())
- swap(str1, str2);
- int n1 = str1.length(), n2 = str2.length();
- string str = "";
- reverse(str1.begin(), str1.end());
- reverse(str2.begin(), str2.end());
- ll carry = 0;
- for (int i=0; i<n1; i++)
- {
- // Do school mathematics, compute sum of
- // current digits and carry
- int sum = ((str1[i]-'0')+(str2[i]-'0')+carry);
- str.push_back(sum%10 + '0');
- // Calculate carry for next step
- carry = sum/10;
- }
- // Add remaining digits of larger number
- for (int i=n1; i<n2; i++)
- {
- int sum = ((str2[i]-'0')+carry);
- str.push_back(sum%10 + '0');
- carry = sum/10;
- }
- // Add remaining carry
- if (carry)
- str.push_back(carry+'0');
- // reverse resultant string
- reverse(str.begin(), str.end());
- return str;
- }
- void Fibs()
- {
- fib[0]="0";
- fib[1]="1";
- for(ll i=2; i<=1000; i++)
- {
- fib[i]=Add_sum(fib[i-1], fib[i-2]);
- }
- }
- ll fb[100];
- void Fib()
- {
- fb[0]=1;
- fb[1]=1;
- for(ll i=2; i<=95; i++)
- {
- fb[i]=fb[i-1]+fb[i-2];
- }
- }
- int Extended_Euclidean_GCD(int a, int b, int& x, int& y)
- {
- if (b == 0)
- {
- x = 1;
- y = 0;
- return a;
- }
- int x1, y1;
- int d = Extended_Euclidean_GCD(b, a % b, x1, y1);
- x = y1;
- y = x1 - y1 * (a / b);
- return d;
- }
- #define bug printf("**!\n")
- #define D(x) cerr << __LINE__ << ": " #x " = " << (x) << '\n'
- #define DD(x, y) cerr << __LINE__ << ": " #x " = " << (x) << ", " #y " = " << (y) << '\n'
- #define DDD(x, y, z) cerr << __LINE__ << ": " #x " = " << (x) << ", " #y " = " << (y) << ", " #z " = " << (z) << '\n'
- vector <int> prime; //In this vector all the primes are saved
- bitset<MAXP> mark; //nonprime indexes are true, prime indexes are false here
- void sieve(){
- int m=1.0*sqrt(MAXP)+2; int x;
- prime.push_back(2); prime.push_back(3);
- mark[0]=mark[1]=true;
- for(int i=4;i<MAXP;i+=2)mark[i]=true;
- for(int i=9;i<MAXP;i+=6)mark[i]=true;
- for(int i=5;i<MAXP;i+=6){
- if(!mark[i]){
- prime.push_back(i);
- if(i<=m)
- for(int j=i*i;j<MAXP;j+=2*i)mark[j]=true;
- }
- if(!mark[i+2]){ x=i+2;
- prime.push_back(x);
- if(x<=m)
- for(int j=x*x;j<MAXP;j+=2*x)mark[j]=true;
- }
- }
- }
- vector <long long> vec ;
- void divisors(long long n)
- {
- vec.clear() ;
- for(long long i = 1 ; i * i <= n ; i++)
- {
- if(n % i == 0)
- {
- vec.push_back(i) ;
- if(i * i != n)
- vec.push_back(n / i) ;
- }
- }
- }
- void prime_Factor(int n)
- {
- for(int i=2; i<=n; i++)
- {
- if(n%i==0)
- {
- int cnt=0;
- while(n%i==0)
- {
- n=n/i;
- cnt++;
- }
- cout << i <<"^"<< cnt << " ";
- }
- }
- cout << endl;
- }
- vector<int>factor;
- void primeFactorize(int n)
- {
- for(int i=0; prime[i]*prime[i]<=n && i<prime.size(); i++)
- {
- if(n%prime[i]==0)
- {
- while(n%prime[i]==0)
- {
- n=n/prime[i];
- factor.push_back(prime[i]);
- }
- }
- }
- if(n>1)
- {
- factor.push_back(prime[i]);
- }
- }
- bool IsPrime(ll n)
- {
- if (n == 2 or n == 3) return true;
- if (n % 2 == 0) return false;
- for (ll i = 3; i * i <= n; i += 2) if (n % i == 0) return false;
- return true;
- }
- string Add_sum(string str1,string str2)
- {
- if (str1.length() > str2.length())
- swap(str1, str2);
- int n1 = str1.length(), n2 = str2.length();
- string str = "";
- reverse(str1.begin(), str1.end());
- reverse(str2.begin(), str2.end());
- ll carry = 0;
- for (int i=0; i<n1; i++)
- {
- // Do school mathematics, compute sum of
- // current digits and carry
- int sum = ((str1[i]-'0')+(str2[i]-'0')+carry);
- str.push_back(sum%10 + '0');
- // Calculate carry for next step
- carry = sum/10;
- }
- // Add remaining digits of larger number
- for (int i=n1; i<n2; i++)
- {
- int sum = ((str2[i]-'0')+carry);
- str.push_back(sum%10 + '0');
- carry = sum/10;
- }
- // Add remaining carry
- if (carry)
- str.push_back(carry+'0');
- // reverse resultant string
- reverse(str.begin(), str.end());
- return str;
- }
- string multiplication(string nums1,string nums2)
- {
- ll l1 = nums1.size();
- ll l2 = nums2.size();
- ll i,j;
- string str( l1 + l2, '0');
- for(i=l1-1; i>= 0; i--)
- {
- for(j=l2-1; j>= 0; j--)
- {
- ll p = (nums1[i]-'0')*(nums2[j]-'0') + (str[i+j+1]-'0');
- str[i+j+1] = p%10 + '0';
- str[i+j] += p/10;
- }
- }
- for(i=0; i<l1+l2; i++)
- {
- if(str[i]!= '0')
- {
- return str.substr(i);
- }
- }
- return "0";
- }
- string div(string a,ll x)
- {
- ll r=0,i,j,k,l;
- string s;
- for(i=0; i<a.size(); i++)
- {
- r=r*10+a[i]-'0';
- s+=(r/x)+'0';
- r%=x;
- }
- for(i = 0; i <s.size(); i++)
- {
- if(s[i]!= '0')
- {
- return s.substr(i);
- }
- }
- return "0";
- }
- string Addition(string a,string c)
- {
- ll s1,s2,l,i,j,k=0;
- string sum="";
- reverse(a.begin(),a.end());
- reverse(c.begin(),c.end());
- s1=a.size();
- s2=c.size();
- l=max(s1,s2);
- for(i=0; i<l; i++)
- {
- if(i<s1)
- {
- k+=(a[i]-'0');
- }
- if(i<s2)
- {
- k+=(c[i]-'0');
- }
- sum+=((k%10)+'0');
- k/=10;
- }
- if(k)
- {
- sum+=(k+'0');
- }
- reverse(sum.begin(),sum.end());
- for(i = 0; i <sum.size(); i++)
- {
- if(sum[i]!= '0')
- {
- return sum.substr(i);
- }
- }
- return "0";
- }
- string subtract(string str1, string str2)
- {
- if (str1<str2)
- {
- swap(str1, str2);
- }
- string str;
- ll n1 = str1.length();
- ll n2 = str2.length();
- reverse(str1.begin(), str1.end());
- reverse(str2.begin(), str2.end());
- ll carry=0,i,sub;
- for (i = 0; i < n2; i++)
- {
- sub= ((str1[i] - '0') - (str2[i] - '0') - carry);
- if (sub < 0)
- {
- sub = sub + 10;
- carry = 1;
- }
- else
- {
- carry = 0;
- }
- str+=(sub+'0');
- }
- for (i=n2; i < n1; i++)
- {
- sub=((str1[i] - '0') - carry);
- if (sub<0)
- {
- sub = sub + 10;
- carry = 1;
- }
- else
- {
- carry = 0;
- }
- str+=(sub+'0');
- }
- reverse(str.begin(), str.end());
- for(i=0; i<str.size(); i++)
- {
- if(str[i]!= '0')
- {
- return str.substr(i);
- }
- }
- return "0";
- }
- int main()
- {
- BITCH_FAST();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement