KY30进制转换
1.最开始没有考虑到大数问题,可以说是没考虑完全,输入类型使用的是int64_t,只ac了一半测试用例。所以在数很大找不到合适的数据类型存储时,要考虑使用string来存放。
2.使用string存放数字的时候就要考虑:字符和数字之间的转换。字符转换成数字:str[i]-'0',数字转换成字符:int+'0'。
3.竖式除法的模拟过程(就是将一个数m中的每一位反复除以要除的数n,直到除为0)要注意理解,并且注意外层循环的迭代是根据某一位是否被整除为0。
string transfer(string s,int m,int n)
{int len=s.length();string ans="";//模拟竖式除法for(int i=0;i<len;){int remain=0;for(int j=i;j<len;++j){int temp=(remain*m+s[j]-'0')%n;//转为整型s[j]=(remain*m+s[j]-'0')/n+'0';//转为字符remain=temp;}ans+=char(remain+'0');while(s[i]=='0')i++;}reverse(ans.begin(),ans.end());return ans;
}int main()
{string num_10;//当无法用数据类型存放时记得用字符串存放while(cin>>num_10){cout<<transfer(num_10,10,2)<<endl;}return 0;
}