第五届蓝桥杯省赛C++B组 史丰收速算
标题:史丰收速算
史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!
速算的核心基础是: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* p)
{char* level[] = {"142857","285714","428571","571428","714285","857142"};char buf[7];buf[6] = '\0';strncpy(buf,p,6);int i;for(i=5; i>=0; i--){int r = strcmp(level[i], buf);if(r<0) return i+1;while(r==0){p += 6;strncpy(buf,p,6);r = strcmp(level[i], buf);if(r<0) return i+1;______________________________; //填空}}return 0;
}//多位数乘以7
void f(char* s)
{int head = jin_wei(s);if(head > 0) printf("%d", head);char* p = s;while(*p){int a = (*p-'0');int x = (ge_wei(a) + jin_wei(p+1)) % 10;printf("%d",x);p++;}printf("\n");
}int main()
{f("428571428571");f("34553834937543"); return 0;
}
注意:通过浏览器提交答案。只填写缺少的内容,不要填写任何多余的内容(例如:说明性文字)
答案:if(r>0) return i
思路:leve[i]就相当于满leve[i]进i+1,因为填空所在的那段是判断条件为r==0的循环,所以是在当前buff段与某个leve相等的情况下,看下一个buff段进位多少,那么r<0就是进位i+1,r>0就是进位i,r==0就继续看下一段buff。
第五届蓝桥杯省赛C++B组 史丰收速算相关推荐
- 第五届蓝桥杯国赛C++B组 Log大侠
标题:Log大侠 atm参加了速算训练班,经过刻苦修炼,对以2为底的对数算得飞快,人称Log大侠. 一天,Log大侠的好友 drd 有一些整数序列需要变换,Log大侠正好施展法力... 变换的规则是: ...
- 蓝桥杯_C语言_本科B——史丰收速算
标题:史丰收速算 史丰收速算法的革命性贡献是:从高位算起,预测进位.不需要九九表,彻底颠覆了传统手算!速算的核心基础是:1位数乘以多位数的乘法.其中,乘以7是最复杂的,就以它为例.因为,1/7 是个循 ...
- 蓝桥杯国赛C++A组B组题解整理(第八、七、六、五、四届)
[写在前面的话19.04.04] 今年省赛的结果出的意外得快,有很多小伙伴来和我分享他们进了省一的喜悦,并问我啥时候更新国赛题解,emmm--不是我不想更新,实在是抽不出时间,有缘再更--虽然不更新题 ...
- [第五届蓝桥杯省赛C++A/B组]蚂蚁感冒
来源: 第五届蓝桥杯省赛C++A/B组 算法标签:数学 题目描述 长 100 厘米的细长直杆子上有 n 只蚂蚁. 它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒. 当 ...
- 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑
题目链接 Ideas 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑 Code Python if __name__ == '__main__':n = int(input( ...
- 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数
2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...
- 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - D.蛇形填数
这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数 Ideas 这题其实严格意义 ...
- 第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解
第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解(非满分) import java.util.Scanner; public class Main {public static void main( ...
- [第四届蓝桥杯省赛C++B组]省赛全题目题解
文章目录 快速分支通道 1.高斯日记 来源: 第四届蓝桥杯省赛C++A/B组 算法标签 模拟 题目描述 输出格式 思路 CPP代码 2.马虎的算式 题目描述: 算法标签: 枚举 题目答案: 题目思路: ...
最新文章
- android 手势放缩_AIR Android:放大与缩小手势
- 践行RONG理念,2018年清华数据院科研成果一隅
- AI产业投融资情况回顾、中美科技巨头AI产业投资布局以及领先投资机构AI产业投资布局...
- 如果你在2018面试前端,那这篇文章最好看一看!
- 实验3 动态规划(0/1背包)
- spring整合mongodb集群
- Madagascar的宏定义函数--判断整数的奇偶性函数
- 【java学习之路】(数据结构篇)004.递归和二叉搜索树
- Redis多线程执行 -- 过程分析
- clockworkmod CWM简单介绍
- Java实现中英文词典功能
- MikuMikuDance:渲染扩展《2》
- linux 配置思科路由器,思科路由器配置帧中继基本命令
- day02-08 python基础语法
- 华为机试4.20:按照路径替换二叉树
- 射频百科 | 限幅器的使用指南
- 程序员的奋斗史(二十八)——寒门再难出贵子
- MySQL是做什么的
- greasemonkey_Google Chrome浏览器中的Greasemonkey脚本入门指南
- POJ 2886:Who Gets the Most Candies?