网站建设管理ppt模板建立传媒公司网站
网站建设管理ppt模板,建立传媒公司网站,自己搭建网站服务器,synology建设网站题目链接#xff1a;
10进制 VS 2进制http://www.nowcoder.com/share/jump/437195121691738172415
描述
对于一个十进制数A#xff0c;将A转换为二进制数#xff0c;然后按位逆序排列#xff0c;再转换为十进制数B#xff0c;我们称B为A的二进制逆序数。 例如对于十进制…题目链接
10进制 VS 2进制http://www.nowcoder.com/share/jump/437195121691738172415
描述
对于一个十进制数A将A转换为二进制数然后按位逆序排列再转换为十进制数B我们称B为A的二进制逆序数。 例如对于十进制数173它的二进制形式为10101101逆序排列得到10110101其十进制数为181181即为173的二进制逆序数。 输入描述
一个1000位(即10^999)以内的十进制数。 输出描述
输入的十进制数的二进制逆序数。 示例1 输入
173
输出
181
思路
输入一个十进制数 s。使用大整数除法函数 divide 将 s 不断除以 2得到二进制数的各个位存放在向量 binary 中顺序是按位逆序排列的。初始化一个字符串 res 为 0用于存放最终的结果。遍历 binary 中的每一位将 res 乘以 2相当于左移一位然后加上当前位的值得到二进制逆序数的十进制表示。输出最终的二进制逆序数。
注意代码中使用了字符串来表示大整数通过模拟除法、乘法和加法操作实现了对二进制逆序数的计算和转换。
源代码
#includeiostream
#includestring
#includevector
using namespace std;// 例题6.3 KY26 10进制 VS 2进制 // 字符串表示的大整数除法
string divide(string str, int x) {int reminder 0; // 余数for (int i 0; i str.size(); i) {int current reminder * 10 str[i] - 0; // 当前位的数值str[i] current / x 0; // 更新当前位的值为商的字符表示reminder current % x; // 更新余数}int pos 0;while (str[pos] 0) {pos; // 移除前导零}return str.substr(pos); // 返回除法结果移除前导零
}string multiple(string str, int x) {int carry 0; // 进位for (int i str.size() - 1; i 0; i--) {int current x * (str[i] - 0) carry; // 当前位的计算结果str[i] current % 10 0; // 更新当前位的值为计算结果的个位carry current / 10; // 更新进位}if (carry ! 0) {str 1 str; // 处理最终的进位}return str;
}string Add(string str, int x) {int carry x; // 初始进位为 xfor (int i str.size() - 1; i 0; i--) {int current (str[i] - 0) carry; // 当前位的计算结果str[i] current % 10 0; // 更新当前位的值为计算结果的个位carry current / 10; // 更新进位}if (carry ! 0) {str 1 str; // 处理最终的进位}return str;
}int main() {string s;cin s; // 输入十进制数vectorint binary; // 用于存放二进制逆序的每一位while (s.size() ! 0) {int last s[s.size() - 1] - 0; // 取最后一位binary.push_back(last % 2); // 将最后一位的余数二进制的最低位存入 vectors divide(s, 2); // 将十进制数除以 2得到下一轮迭代的数值}// 将得到的 binary 中的按位逆序排列的二进制数转换为十进制数string res 0; // 初始化结果为 0for (int i 0; i binary.size(); i) {res multiple(res, 2); // 将结果乘以 2相当于左移一位res Add(res, binary[i]); // 加上当前位的值}cout res endl; // 输出最终的二进制逆序数return 0;
}提交结果
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92174.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!