《算法设计与分析实用教程》习题参考解答
PAGE
PAGE 33
《算法设计与分析实用教程》参考解答
(各习题的算法设计与数据测试仅供参考)
习题1
1-1 加减得1的数学游戏
西西很喜欢数字游戏,今天他看到两个数,就想能否通过简单的加减,使最终答案等于1。而他又比较厌烦计算,所以他还想知道最少经过多少次才能得到1。
例如,给出16,9:16-9+16-9+16-9-9-9+16-9-9=1,需要做10次加减法计算。
设计算法,输入两个不同的正整数,输出得到1的最少计算次数。(如果无法得到1,则输出-1)。
(1) 若输入两个不同的正整数a,b均为偶数,显然不可能得到1。
设x*a与y*b之差为“1”或“-1”,则对于正整数a,b经n=x+y-1次加减可得到1。
为了求n的最小值,令n从1开始递增,x在1——n中取值,y=n+1-x:
检测d=x*a+y*b,若d=1或-1,则n=x+y-1为所求的最少次数。
(2) 算法描述
// 两数若干次加减结果为1的数学游戏
#include stdio.h
void main()
{long a,b,d,n,x,y;
printf( 请输入整数a,b: );
scanf(%ld,%ld,a,b);
if(a%2==0 b%2==0)
{ printf( -1\n);return;}
n=0;
while(1)
{
您可能关注的文档
最近下载
- IATF16949标准题库(含答案).doc
- J-BT-3926.13-1999 垂直斗式提升机 圆环链链轮参数尺寸.pdf VIP
- 工程施工方案的编制依据(3篇).docx
- 2025年人格七宗罪测试题及答案.doc VIP
- CZ2209--92改进型50km钢轨9号单开道岔总布置图(中铁轨道系统公司2009).pdf VIP
- 08 第二章 第四节 海洋空间资源开发与国家安全.pptx VIP
- 《屋顶分布式光伏发电系统施工技术规范》.pdf VIP
- 2023年某能源电解铝项目阳极组装车间施工方案方案模板.pptx VIP
- 《湿式排水一体化预制泵站》.pdf VIP
- 电气控制与S7-1200 PLC应用教程 课件 项目15:步进电机驱动的工作台PLC控制系统设计安装与调试.ppt
原创力文档

文档评论(0)