蓝桥杯2014年(第5届)省赛b组c/c++ 史丰收速算
标题:史丰收速算
史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!
速算的核心基础是: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;
else
return (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;
}
注意:通过浏览器提交答案。只填写缺少的内容,不要填写任何多余的内容(例如:说明性文字)
分析:这个题目我们从公式中看出超过这些数字,规定了进位
"142857",
"285714",
"428571",
"571428",
"714285",
"857142"
分析:程序中我们发现,没有规定buf小于这些数字的情况,我们需要添加的就是这个部分,由于if(r<0) return i+1;所以r>0,进位比规定的进位小1,就得出了答案
答案:if(r>0) return i;
蓝桥杯2014年(第5届)省赛b组c/c++ 史丰收速算相关推荐
- 蓝桥杯2015年第六届C/C++ B组省赛习题题解
目录 第一题:奖券数目 第二题:星系炸弹(日期计算) 第三题:三羊献瑞(全排列) 第四题:格子中输出 第五题:九数组分数(dfs) 第六题:加法变乘法(枚举) 第七题:牌型种数(dfs+dp) 第八题 ...
- [蓝桥杯]2019年第十届省赛真题C/C++ B组 填空+大题
第十届蓝桥杯省赛题目 填空A:组队 填空B:年号字串 填空C:数列求值 填空 D: 数的分解 填空 E: 迷宫 大题F:特别数的和 大题G:完全二叉树的权值 大题H:等差数列 大题I-后缀表达式 填空 ...
- 【蓝桥杯嵌入式】第六届省赛程序题项目代码及讲解
文章目录 蓝桥杯嵌入式第六届省赛 介绍 配置 RTC配置 配置ADC 配置串口: LED和按键的配置 E2PROM 头文件 初始化 串口测试 LCD测试 RTC测试 ADC测试 按键和LED测试 E2 ...
- 蓝桥杯单片机第十四届省赛题目和程序答案
目录 1.前言 2.题目 3.程序架构 3.1 display.c 3.2 ds1302.c 3.3 iic.c 3.4 onewire.c 3.5 main.c 主函数文件 3.6 环境配置 4. ...
- 题目 2311: 蓝桥杯2019年第十届省赛真题-Fibonacci 数列与黄金分割
题目 Fibonacci 数列是非常著名的数列: F[1] = 1,F[2] = 1, 对于 i > 3,F[i] = F[i − 1] + F[i − 2] Fibonacci 数列有一个特殊 ...
- 蓝桥杯嵌入式STM32G431——第七届省赛真题模拟液位检测告警系统
第七届省赛真题模拟液位检测告警系统 第七届省赛真题 主函数部分的代码功能实现(不包含各模块初始化代码) 第七届省赛真题 主函数部分的代码功能实现(不包含各模块初始化代码) #include " ...
- 第八届蓝桥杯(软件类)C++省赛A组真题题解
文章目录 题目链接 A组真题 题目结构 第一题 迷宫 第二题 跳蚱蜢 第三题 魔方状态 第四题 方格分割 第五题 字母组串 第六题 最大公共子串 第七题 正则问题 第八题 包子凑数 第九题 分巧克力 ...
- 【第十四届蓝桥杯】第三期官方校内模拟赛B组C++题解(已修正完毕,均可AC100%)
文章目录 写在前面 一.字母数(AC100%) 题目描述 解题报告 1.大体思路 2.代码详解 二.列名(AC100%) 题目描述 解题报告 1.大体思路 2.代码详解 三.特殊日期(AC100%) ...
- 蓝桥杯2019年第十届国赛真题-大胖子走迷宫
题目 题目链接 题解 BFS. 整体思路:将位置信息和时刻信息放入队列,根据时刻信息判断当前时刻小明的大小,如果大小为1×11×11×1则不能原地停留,因为没意义啊,停留是为了让自己的肚子减小,但是1 ...
- 蓝桥杯2022年第十三届省赛真题-纸张尺寸
题目描述 在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm × 841mm,将 A0 纸沿长边对折后为 A1 纸,大小为 841mm × 594mm,在对折的过程中长度直接取下整(实际裁 ...
最新文章
- 霍夫变换(Hough Transform):霍夫变化在图像处理以及点云处理中的直线检测应用
- Java并发编程:线程封闭和ThreadLocal详解
- Unix系统编程()虚拟内存管理
- [转] MySQL和MongoDB设计实例对比
- 如何操作提升手机端网站的排名优化?
- 8.0强行转换后变成了7_【建筑通】钻孔灌注桩后注浆施工工艺介绍
- 为什么标准C++中两个直接字符串常量不能相加
- 算法之排序算法-shell排序(交换法)
- css5最新灵敏度,影响灵敏度的因素 - nakcy0009的专栏 - 52RD博客_52RD.com
- linux线程组和进程区别,Linux中进程和线程之间的区别
- PCI Geomatica 操作视频专辑
- 你租的房子遇 “坑” 了么?
- 凸优化1——仿射集、凸集、锥
- Alpha阶段测试报告
- 一个简单的Appium测试(Python语言)
- coap python_Python coap
- java 读取csv文件乱码_java读取csv文件乱码怎么解决
- C盘数据丢失恢复详解和注意事项
- 计算机伦理的发展,人工智能技术发展的伦理困境研究
- 优酷网视频播放器站外调用详解