Advertisement
sushmoyr

CRC FINAL

Jul 30th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. string normalize(string s)
  4. {
  5.     string ans="";
  6.     int i=-1;
  7.     while(s[++i]!='1');
  8.     for(int j=i; j<s.size(); j++)
  9.         ans+=s[j];
  10.     return ans;
  11.  
  12. }
  13. string XOR(string a, string b)
  14. {
  15.     string ans="";
  16.     for(int i=0; i<a.size(); i++)
  17.     {
  18.         ans+=((a[i]-48)^(b[i]-48))+48;
  19.     }
  20.     return ans;
  21. }
  22. bool get_crc(string data, string divisor)
  23. {
  24.     int div,temp;
  25.     string temps="";
  26.     for(int i=0; i<data.size(); i++)
  27.     {
  28.         temps+=data[i];
  29.         if(temps.size()==divisor.size())
  30.         {
  31.             temps=XOR(temps,divisor);
  32.             temps=normalize(temps);
  33.         }
  34.     }
  35.     temps=normalize(temps);
  36.     return !temps.empty();
  37. }
  38. int main()
  39. {
  40.     string data,divisor;
  41.     int div;
  42.     cin>>data>>divisor;
  43.     int n=divisor.size();
  44.  
  45.     bool res=get_crc(data,divisor);
  46.     if(res)
  47.         cout<<"YES"<<endl;
  48.     else
  49.         cout<<"NO"<<endl;
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement