Multiplying by Rotation
2015-08-05 16:01
239 查看
Multiplying by Rotation
大意:
有一些数字的乘法计算很奇特,如179487*4=717948;
即把最后一位提到最前面;
现在给出n1,n2,n3,n1代表计算是的进制,n2代表第一个乘数的最后以为,n3代表第三个乘数,求出n2的长度;
要点:
以179487*4=717948为例,由于.....7*4=7.....;
4×7 = 28,得出右数第1个数为8,即.......87×4 = 7.....8;
4×8 = 32,得出第2个数为(28/10)+(32%10)= 4,即.....487×4 = 7.......48;
4*4 = 16,得出第3个数为(32/10)+(16%10)= 9,即....9487×4 = 7.......948;
4*9 = 36,得出第4个数为(16/10)+(36%10) = 7,即...79487×4 = 7....7948;
4*7 = 28,得出第5个数为((36/10)+(28%10)) % 10 = 1,即..179487*4 = 7...17948;
4×1 = 4, 得出第6个数为(28/10 + ((36/10)+(28%10)) / 10)+(4%10)= 7,由于4+3=7没有再进位,计算结束;
代码:
大意:
有一些数字的乘法计算很奇特,如179487*4=717948;
即把最后一位提到最前面;
现在给出n1,n2,n3,n1代表计算是的进制,n2代表第一个乘数的最后以为,n3代表第三个乘数,求出n2的长度;
要点:
以179487*4=717948为例,由于.....7*4=7.....;
4×7 = 28,得出右数第1个数为8,即.......87×4 = 7.....8;
4×8 = 32,得出第2个数为(28/10)+(32%10)= 4,即.....487×4 = 7.......48;
4*4 = 16,得出第3个数为(32/10)+(16%10)= 9,即....9487×4 = 7.......948;
4*9 = 36,得出第4个数为(16/10)+(36%10) = 7,即...79487×4 = 7....7948;
4*7 = 28,得出第5个数为((36/10)+(28%10)) % 10 = 1,即..179487*4 = 7...17948;
4×1 = 4, 得出第6个数为(28/10 + ((36/10)+(28%10)) / 10)+(4%10)= 7,由于4+3=7没有再进位,计算结束;
代码:
#include <iostream> using namespace std; int main(){ int base, last, mul; while (cin >> base >> last >> mul){ int cur = last * mul; int m1, m2, count = 1; while (cur != last){ m1 = cur / base; m2 = cur % base; cur = m2 * mul + m1; count ++; } cout << count << endl; } }
相关文章推荐
- Android adb的一些使用方法
- Codeforces 115A- Party
- python eval函数 动态执行python语句
- python中的字典详细介绍
- bundle install 老是中断,可以在gemfile里面把source换成taobao源,可以自动安装
- 上拉页面自动加载
- 全民消消乐电信SDK对接
- Linux IO实时监控iostat命令详解
- 学习日记8.5
- 关于命令行参数
- 生成framework ,脚本
- 求位数 hdu 1018 Big Number
- android 读取本地大图片时防止oom方法
- linux下vi的复制,黏贴,删除,撤销,跳转等命令-费元星
- 如何安装虚拟机VMware
- zoj 3135 Party of 8g 最大点权独立集
- linux epoll事件模型详解(转载)
- 杭电acm 2504又见GCD
- DP ACdream 喵哈哈村的挑衅
- android 自定义ScrollView实现背景图片伸缩(阻尼效果)