题目

史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!速算的核心基础是: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请分析程序流程,填写划线部分缺少的代码。
//计算个位
int ge_wei(int a)
{if(a % 2 == 0)return (a * 2) % 10;elsereturn (a * 2 + 5) % 10;
}//计算进位
int jin_wei(char* mod)
{char* level[] = {"142857","285714","428571","571428","714285","857142"};char buf[7];buf[6] = '\0';strncpy(buf,mod,6);int i;for(i=5; i>=0; i--){int tr = strcmp(level[i], buf);if(tr<0) return i+1;while(tr==0){mod += 6;strncpy(buf,mod,6);tr = strcmp(level[i], buf);if(tr<0) return i+1;______________________________;  //填空}}return 0;
}//多位数乘以7
void f(char* s)
{int head = jin_wei(s);if(head > 0) printf("%d", head);char* mod = s;while(*mod){int a = (*mod-'0');int x = (ge_wei(a) + jin_wei(mod+1)) % 10;printf("%d",x);mod++;}printf("\n");
}int main()
{f("428571428571");dfs("34553834937543");return 0;
}

注意:通过浏览器提交答案。只填写缺少的内容,不要填写任何多余的内容(例如:说明性文字)

代码

#include <iostream>
using namespace std;
//计算个位
int ge_wei(int a)
{if(a % 2 == 0)//偶数return (a * 2) % 10;//乘以2保留个位elsereturn (a * 2 + 5) % 10;//奇数,乘以2加上5,保留个位
}//计算进位
int jin_wei(char* mod)
{char* level[] = {"142857","285714","428571","571428","714285","857142"};//多位数超过 n/7,就要进nchar buf[7];buf[6] = '\0';strncpy(buf,mod,6);//将mod这个字符串的前6个字符,拷贝到buff中int i;for(i=5; i>=0; i--){int tr = strcmp(level[i], buf);//从后往前,依次level中的串和buff比较if(tr<0)//buff更大 ,得出了进位数=i+1return i+1;while(tr==0){//buff和level[i]相同了mod += 6;//往后偏移6位strncpy(buf,mod,6);//再拷贝6个字符到buff中tr = strcmp(level[i], buf);//再比较if(tr<0) return i+1;//buf更大
//            ______________________________;  //填空
//            //?//buff更小if(tr>0)  return i;}}return 0;
}//多位数乘以7
void f(char* s)//s代表多位数
{int head = jin_wei(s);//head是s的进位if(head > 0) printf("%d", head);//输出进位char* mod = s;//拷贝字符串指针while(*mod){//没有到末尾int a = (*mod-'0');//依次字符转数字int ge = ge_wei(a);//算出个位int jin = jin_wei(mod + 1);//后续字符串的进位int x = (ge + jin) % 10;//两者相加取个位printf("%d",x);//打印mod++;//指针后移}printf("\n");
}int main()
{f("4285711");f("34553834937543");return 0;
}

征战蓝桥 —— 2014年第五届 —— C/C++A组第4题——史丰收速算相关推荐

  1. 征战蓝桥 —— 2014年第五届 —— C/C++A组第10题——波动数列

    题目 观察这个数列: 1 3 0 2 -1 1 -2 ...这个数列中后一项总是比前一项增加2或者减少3.栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少b的整 ...

  2. 征战蓝桥 —— 2014年第五届 —— C/C++A组第5题——锦标赛

    题目 如果要在n个数据中挑选出第一大和第二大的数据(要求输出数据所在位置和值),使用什么方法比较的次数最少? 我们可以从体育锦标赛中受到启发. 如图[1.png]所示,8个选手的锦标赛,先两两捉对比拼 ...

  3. 征战蓝桥 —— 2014年第五届 —— C/C++A组第6题——扑克排序

    题目 A A 2 2 3 3 4 4, 一共4对扑克牌.请你把它们排成一行. 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌.请填写出所有符合要求的排列中,字典序 ...

  4. 征战蓝桥 —— 2014年第五届 —— C/C++A组第8题——地宫取宝

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

  5. 征战蓝桥 —— 2014年第五届 —— C/C++A组第9题——斐波那契

    题目 斐波那契数列大家都非常熟悉.它的定义是:f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) .... (x>2)对于给定的整数 n 和 m,我们希望求 ...

  6. 征战蓝桥 —— 2014年第五届 —— C/C++A组第3题——神奇算式

    题目 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成.比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求.如果满足乘法交 ...

  7. 征战蓝桥 —— 2014年第五届 —— C/C++A组第1题——猜年龄

    题目 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍". 小明又补充说:"她们可不是双胞胎,年龄差肯定也不超过8岁啊.&q ...

  8. 蓝桥杯第五届C/C++A组第四题 史丰收速算

    标题:史丰收速算 史丰收速算法的革命性贡献是:从高位算起,预测进位.不需要九九表,彻底颠覆了传统手算!速算的核心基础是:1位数乘以多位数的乘法.其中,乘以7是最复杂的,就以它为例.因为,1/7 是个循 ...

  9. 征战蓝桥 —— 2017年第八届 —— C/C++A组第5题——字母组串

    题目 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA","AACB ...

最新文章

  1. 上海AI高地雏形初现 徐汇区抢占产业潮头
  2. 存货编码数字_用友T3软件存货编码与存货代码有什么不同?
  3. 怎么提高python能力_怎样提高python分析数据能力?
  4. python 时间日期处理
  5. matlab期权风险评估算法,使用 MATLAB 应用程序根据期权价格估算风险中性密度 (risk-neutral density, RND)...
  6. iPhone6plus 的 iOS 11 GM和正式版安装包的 md5一模一样
  7. 有助提高效率的Web前端开发框架有哪些?
  8. python k线合成_在VNPY中策略中,使用分钟线合成日K线
  9. 策略研集合竞选(附源码)
  10. onload事件和ready方法的区别
  11. easyExcel 复杂表头 动态表头
  12. 数据无界·存储无疆:大数据时代下,闪存已经势不可挡
  13. sftp命令上传本地文件到服务器,使用sftp命令上传文件夹方法
  14. 1037u支持64位linux吗,英特尔® 赛扬® 处理器 1037U
  15. 浅浅瞅瞅RSA-PSS 算法
  16. 1.JAVA基础汇总
  17. android设备判断是否支持NFC功能
  18. Chrome 快速清理某个地址缓存
  19. 学习HM微博项目第10天
  20. Android实战 - 音心播放器 (通知实现音乐的播放/暂停/下一曲控制)

热门文章

  1. Jack (Java Android Compiler Kit)
  2. TCP与UDP网络编程总结(一)
  3. cpu多核 node 单线程_node单线程支撑高并发原理(node异步I/O)
  4. sql导入excel数据失败_nifi入门从Excel数据导入ES开始
  5. oracle 把逗号分隔符,将逗号分隔为Oracle中的列
  6. Java黑皮书课后题第5章:*5.14(计算最大公约数)下面是求两个整数n1和n2的最大公约数的程序清单5-9的另一种解法:...提示用户输入两个正整数,然后显示最大公约数
  7. C语言学习之编程序,用getchar函数读入两个字符给cl和c2,然后分别用putchar函数和printf函数输出这两个字符
  8. u盘插入linux系统没有反应_linux系统无法挂载U盘
  9. 防沉迷人脸识别可以扫照片吗_人脸识别的智能门锁到底安不安全?用照片可以打开是真的吗?...
  10. 数据结构课程设计---学生信息管理系统