史丰收速算
史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!
速算的核心基础是:1位数乘以多位数的乘法。
其中,乘以7是最复杂的,就以它为例。
因为,1/7 是个循环小数:0.142857...,如果多位数超过 142857...,就要进1
同理,2/7, 3/7, ... 6/7 也都是类似的循环小数,多位数超过 n/7,就要进n
下面的程序模拟了史丰收速算法中乘以7的运算过程。
乘以 7 的个位规律是:偶数乘以2,奇数乘以2再加5,都只取个位。
乘以 7 的进位规律是:
满 142857... 进1,
满 285714... 进2,
满 428571... 进3,
满 571428... 进4,
满 714285... 进5,
满 857142... 进6
请分析程序流程,填写划线部分缺少的代码。

答案:if(r>0)return i

[cpp] view plain copy  
  1. //计算个位
  2. int ge_wei(int a)
  3. {
  4. if(a % 2 == 0)
  5. return (a * 2) % 10;
  6. else
  7. return (a * 2 + 5) % 10;
  8. }
  9. //计算进位
  10. int jin_wei(char* p)
  11. {
  12. char* level[] = {
  13. "142857",
  14. "285714",
  15. "428571",
  16. "571428",
  17. "714285",
  18. "857142"
  19. };
  20. char buf[7];
  21. buf[6] = '\0';
  22. strncpy(buf,p,6);
  23. int i;
  24. for(i=5; i>=0; i--){
  25. int r = strcmp(level[i], buf);
  26. if(r<0) return i+1;
  27. while(r==0){
  28. p += 6;
  29. strncpy(buf,p,6);
  30. r = strcmp(level[i], buf);
  31. if(r<0) return i+1;
  32. ______________________________;  //填空
  33. }
  34. }
  35. return 0;
  36. }
  37. //多位数乘以7
  38. void f(char* s)
  39. {
  40. int head = jin_wei(s);
  41. if(head > 0) printf("%d", head);
  42. char* p = s;
  43. while(*p){
  44. int a = (*p-'0');
  45. int x = (ge_wei(a) + jin_wei(p+1)) % 10;
  46. printf("%d",x);
  47. p++;
  48. }
  49. printf("\n");
  50. }
  51. int main()
  52. {
  53. f("428571428571");
  54. f("34553834937543");
  55. return 0;
  56. }

最终结果:

[cpp] view plain copy  
  1. //计算个位
  2. int ge_wei(int a)
  3. {
  4. if(a % 2 == 0)
  5. return (a * 2) % 10;
  6. else
  7. return (a * 2 + 5) % 10;
  8. }
  9. //计算进位
  10. int jin_wei(char* p)
  11. {
  12. char* level[] =
  13. {
  14. "142857",
  15. "285714",
  16. "428571",
  17. "571428",
  18. "714285",
  19. "857142"
  20. };
  21. char buf[7];
  22. buf[6] = '\0';
  23. strncpy(buf,p,6);
  24. int i;
  25. for(i=5; i>=0; i--)
  26. {
  27. int r = strcmp(level[i], buf);
  28. if(r<0) return i+1;
  29. while(r==0)
  30. {
  31. p += 6;
  32. strncpy(buf,p,6);
  33. r = strcmp(level[i], buf);
  34. if(r<0) return i+1;
  35. if(r>0)return i ;
  36. }
  37. }
  38. return 0;
  39. }
  40. //多位数乘以7
  41. void f(char* s)
  42. {
  43. int head = jin_wei(s);
  44. if(head > 0) printf("%d", head);
  45. char* p = s;
  46. while(*p)
  47. {
  48. int a = (*p-'0');
  49. int x = (ge_wei(a) + jin_wei(p+1)) % 10;
  50. printf("%d",x);
  51. p++;
  52. }
  53. printf("\n");
  54. }
  55. int main()
  56. {
  57. f("428571428571");
  58. f("34553834937543");
  59. return 0;
  60. }

蓝桥杯 历届试题 史丰收速算相关推荐

  1. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

    问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

  2. [蓝桥杯][历届试题]国王的烦恼(反向+并查集)

    问题 1435: [蓝桥杯][历届试题]国王的烦恼 时间限制: 1Sec 内存限制: 128MB 提交: 802 解决: 213 题目描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了 ...

  3. 蓝桥杯 - 历届试题 - 日期问题

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_33531813/article/details/79516258 </div>&l ...

  4. 二分搜索,POJ2456,NYOJ 914, 区间移位-蓝桥杯-历届试题

    二分搜索是不断缩减可能解的范围来得到最优解, 因为每次是折半, 所以指数爆炸有多快,这个效率就有多高 POJ2456为例, 传送门 简而言之, 就是将牛之间的距离的最小值最大化. #include&l ...

  5. 蓝桥杯历届试题代码参考

    蓝桥杯历届试题代码参考 历届试题 核桃的数量 打印十字图 带分数 剪格子 错误票据 翻硬币 连号区间数 买不到的数目 大臣的旅费 幸运数 横向打印二叉树 危险系数 网络寻路 高僧斗法 格子刷油漆 农场 ...

  6. 问题 1433: [蓝桥杯][历届试题]危险系数(并查集and暴力)

    问题 1433: [蓝桥杯][历届试题]危险系数 时间限制: 1Sec 内存限制: 128MB 提交: 123 解决: 39 题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的 ...

  7. 蓝桥杯c语言试题幸运数,蓝桥杯  历届试题 幸运数  dfs

    时间限制:1.0s   内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2,3,4,5,6,. ...

  8. 历届试题+九宫重排+java_蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)...

    Description 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的 ...

  9. 蓝桥杯历届试题 国王的烦恼(并查集逆序加边+坑)

    历届试题 国王的烦恼   时间限制:1.0s   内存限制:256.0MB 问题描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能存在多座 ...

  10. 蓝桥杯 历届试题 拉马车 java

    Prev43 历届试题 拉马车 题目如下: 问题描述:小的时候,你玩过纸牌游戏吗?有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友.其规则简述如下:假设参加游戏的小朋友是A和 ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色)实战
  2. SharePoint Serivce 安装时的一个问题
  3. ecshop 首页添加某个分类下面的商品
  4. VTK:PolyData之PointInsideObject
  5. php signature解密,openssl RSA非对称加密、解密、签名、验签
  6. Linux常用命令(八)LVM逻辑卷管理
  7. 六步创建TCP服务端
  8. 前端学习(3128):react-hello-react之回调形式的ref
  9. 我平时比较喜欢的几篇技术文章
  10. 一位AI CEO的生死四十天
  11. 利用lavarel框架实现Todos App
  12. hdu 2881 Jack's struggle(DP)
  13. Windows管理用户账号
  14. 《PHP与MySQL程序设计(第四版)》中第73页4.2.6节分期还贷计算器数学原理分析
  15. iOS逆向一iPhone手机越狱/APP脱壳/IPA签名
  16. DecoupleSegNets学习总结
  17. “千亿市值”巨无霸的膨胀 腾讯靠什么撬动下一个1000亿美金?
  18. APP测试之安全性测试
  19. 数字时代,互联网企业的组织形态
  20. nacos 单机部署_使用Docker部署Nacos-Server(单机版)

热门文章

  1. 简易个人所得税计算器
  2. 第三阶段应用层——1.5 数码相册—使用FreeType在LCD上显示单个字符
  3. 解决opencv打开视频上下翻转问题
  4. 电脑无法查看计算机属性,我的电脑属性打不开怎么办
  5. 造成增长停滞的各种原因
  6. JDK1.6安装_BouncyCastle JCE扩展加密算法解决JDK1.6 sftp连接openssh8.6Algorithm negotiation fail问题
  7. Qt开发 之 抓取崩溃信息(读这一篇就够了)
  8. (一)前端html+css学习笔记
  9. Avid Sibelius一款免费学习五线谱的强大软件
  10. android相机固定焦距,如何找到Android相机的焦距?