一个长二进制串,求除3的余数

来源:互联网 发布:淘宝店铺装修图片素材 编辑:程序博客网 时间:2024/06/05 07:16

有一个很长二进制串,求出除以3的余数是多少,给出算法的时间复杂度

/*File name:一个长二进制串,求除3的余数.cppAuthor:杨柳Date:2017/5/30IDE:DEV-c++ 算法思想:首先应该二进制转化为十进制的数n,然后再将十进制数取余3,时间复杂度为:若有n个二进制串,只有一个for循环O(n)。*/#include <iostream>  #include <string.h>  #include <math.h>  using namespace std;//将一个字符型数字转化成整型数字int charToNum(char num)  {      //num在'0'-'9'     if(num<='9'&&num>='0')      {          num-=48;      }        //num在'A/a'到'F/f'     else      {            switch(num)          {          case 'A':          case 'a':              num=10;          case 'B':          case 'b':              num=11;          case 'C':          case 'c':              num=12;          case 'D':          case 'd':              num=13;          case 'E':          case 'e':              num=14;          case 'F':          case 'f':              num=15;          }      }      return num;  } //将任意进制整数转化为十进制整数int convertToDecimal(string num,int binary)  //num为任意进制整数,binary为该整数的进制 {      int len=num.size();      int decimal_num=0;      for(int i=0;i<len;i++)      {          decimal_num+=charToNum(num[i])*pow(binary,len-i-1);      }      return decimal_num;  }  int main(){string str;cout<<"输入二进制串:"<<endl;cin>>str;int decimal_num=convertToDecimal(str,2);int result=decimal_num%3;cout<<"二进制串除以3的余数:" <<endl;cout<<result;return 0;}
/*File name:一个长二进制串,求除3的余数.cppAuthor:杨柳Date:2017/5/30IDE:DEV-c++ 算法思想:首先应该二进制转化为十进制的数n,然后再将十进制数取余3,时间复杂度为:若有n个二进制串,只有一个for循环O(n)。*/#include <iostream>  #include <string.h>  #include <math.h>  using namespace std;//将一个字符型数字转化成整型数字int charToNum(char num)  {      //num在'0'-'9'     if(num<='9'&&num>='0')      {          num-=48;      }        //num在'A/a'到'F/f'     else      {            switch(num)          {          case 'A':          case 'a':              num=10;          case 'B':          case 'b':              num=11;          case 'C':          case 'c':              num=12;          case 'D':          case 'd':              num=13;          case 'E':          case 'e':              num=14;          case 'F':          case 'f':              num=15;          }      }      return num;  } //将任意进制整数转化为十进制整数int convertToDecimal(string num,int binary)  //num为任意进制整数,binary为该整数的进制 {      int len=num.size();      int decimal_num=0;      for(int i=0;i<len;i++)      {          decimal_num+=charToNum(num[i])*pow(binary,len-i-1);      }      return decimal_num;  }  int main(){string str;cout<<"输入二进制串:"<<endl;cin>>str;int decimal_num=convertToDecimal(str,2);int result=decimal_num%3;cout<<"二进制串除以3的余数:" <<endl;cout<<result;return 0;}