英文题求解(1)

bobbylee123 2010-06-16 11:21:06
1. The number 124 has the property that it is the smallest number whose first three multiples contain the digit 2. Observe that 124*1 = 124, 124*2 = 248, 124*3 = 372 and that 124, 248 and 372 each contain the digit 2. It is possible to generalize this property to be the smallest number whose first n multiples each contain the digit 2. Write a function named smallest(n) that returns the smallest number whose first n multiples contain the digit 2.
Its signature is
int smallest(int n)
You may assume that such a number is computable on a 32 bit machine, i.e, you do not have to detect integer overflow in your answer.

Examples
if n is 4 return 624,because the first four multiples of 624 are 624, 1248, 1872, 2496 and they all contain the digit 2. Furthermore 624 is the smallest number whose first four multiples contain the digit 2.
if n is 5 return 624 because the first five multiples of 624 are 624, 1248, 1872, 2496, 3120. Note that 624 is also the smallest number whose first 4 multiples contain the digit 2.
if n is 6 return 642 because the first five multiples of 642 are 642, 1284, 1926, 2568, 3210, 3852
if n is 7 return 4062 because the first five multiples of 4062 are 4062, 8124, 12186, 16248, 20310, 24372, 28434.

Note that it is okay for one of the multiples to contain the digit 2 more than once (e.g., 24372).
...全文
208 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobbylee123 2010-06-22
  • 打赏
  • 举报
回复
我在TURBO C里运行了程序,结果是:
Not Find Smallest Number!

#define INT64_MAX 4294967295
int main()
{
int n = 40;
int i=1;
int IsThereATwo(int n);
int smallest(int n);
int iSmallest = smallest(n);
if(iSmallest)
{
printf("Smallest Number is %d\n", iSmallest);
printf("%d multiples are: ", n);
for(i = 1; i <= n; i++)
printf("%d,", iSmallest*i);
}
else
printf("Not Find Smallest Number!\n");

}

IsThereATwo(int n)
{
for(;n;)
{
if(n%10 == 2)
return 1;
n = n/10;
}
return 0;
}

int smallest(int n)
{
int iTestMax=0;
int iTest=2;
if(!n)
return 0;
iTestMax = INT64_MAX/n;

for(iTest = 2; iTest <= iTestMax; iTest++)
{
int iTestCount = 1;
for(; iTestCount <= n; iTestCount++)
{
int iMult = iTest * iTestCount;
if(!IsThereATwo(iMult))break;
}
if(iTestCount == n+1)
return iTest;
}

return 0;
}
bobbylee123 2010-06-22
  • 打赏
  • 举报
回复
if(iTestCount == n+1)

这个什么意思?
GKatHere 2010-06-22
  • 打赏
  • 举报
回复
刚下了个TC3。
#define INT64_MAX 65535

int n = 8;
怎么还用TC么。TC的int值最大只有32位,VC是64位。所以如上
bobbylee123 2010-06-21
  • 打赏
  • 举报
回复
请问你的程序是在哪里运行的

在TURBO C里运行的时候提示:Unable to open include file 'STDAFX.H'
GKatHere 2010-06-21
  • 打赏
  • 举报
回复
.变量n为什么设置为40 ==》可以随意思设置呀,n表示要找多少个倍数连续有2的数。不过超过50会运算很慢的
GKatHere 2010-06-21
  • 打赏
  • 举报
回复
vc 6 Console PASS.
'STDAFX.H'是VC6头文件,TC中可不用

INT64_MAX 0xffffffff: 这个表示在32位系统中,unsigned int所能表示的最大值。超过这个值,会溢出!

int iTestMax = INT64_MAX/n ==》假如存在这个数x, 并x,x*1,到x*n都含有数字2,那么x可能存在的最大值当然就是INT64_MAX/n的值了,这样可以减少检测个数!
bobbylee123 2010-06-21
  • 打赏
  • 举报
回复
1.变量n为什么设置为40
2.INT64_MAX 0xffffffff 为何设置成16进制的这个数
3.int iTestMax = INT64_MAX/n; 这是什么道理
liutengfeigo 2010-06-16
  • 打赏
  • 举报
回复
金山词霸
liutengfeigo 2010-06-16
  • 打赏
  • 举报
回复
第124有物产它是前三个倍数包含数字2.观察124*1 = 124, 124*2 = 248, 124*3 = 372的最小的数字,并且124, 248和372每包含数字2。 是可能的推断这物产是第一个n倍数中的每一个包含数字2.写作用名为退回最小的数字第一个n倍数包含数字2。的最小的最小的数字(n)
Its署名是<dnt>最小的</dnt>int (int n)
You也许假设,这样数字是可计算的在32二进制位计算机,即,您不必须查出在您的答复的整数溢出。

Examples
if n是前四个倍数的624是624的4回归624,because, 1248年1872年, 2496,并且他们全都包含数字2。 此外624是前四个倍数包含数字2.的最小的数字。 <dnt>因为前五个倍数的624是624日1248年1872年, 2496, 3120, </dnt>if n是5回归624。 注意624也是前4个倍数包含数字2.的最小的数字。
GKatHere 2010-06-16
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include "math.h"
#include <conio.h>//
#include <istream.h>
#include <stdlib.h>

bool IsThereATwo(int n);
int smallest(int n);
#define INT64_MAX 0xffffffff
int main(int argc, char* argv[])
{
int n = 40;
int iSmallest = smallest(n);
if(iSmallest)
{
printf("Smallest Number is %d\n", iSmallest);
printf("%d multiples are: ", n);
for(int i = 1; i <= n; i++)
printf("%d,", iSmallest*i);
}
else
printf("Not Find Smallest Number!\n");

getch();

}

bool IsThereATwo(int n)
{
for(;n;)
{
if(n%10 == 2)
return true;
n = n/10;
}
return false;
}

int smallest(int n)
{
if(!n)
return 0;
int iTestMax = INT64_MAX/n;

for(int iTest = 2; iTest <= iTestMax; iTest++)
{
int iTestCount = 1;
for(; iTestCount <= n; iTestCount++)
{
int iMult = iTest * iTestCount;
if(!IsThereATwo(iMult))break;
}
if(iTestCount == n+1)
return iTest;
}

return 0;
}

是否有其它算法??
bobbylee123 2010-06-16
  • 打赏
  • 举报
回复
不好意思啊,我不是要翻译。
我是要解题答案,我应该先翻译好了再发上来的。
stein42 2010-06-16
  • 打赏
  • 举报
回复
1。 124这个数字有属性,它是最小的数字包含的第一个3的倍数的数字2。观察到124 * 1 = 124,124 * 2 = 248,124 * 3 = 372和124,248和372每个包含该数字2。它可以概括此属性是最小数的前n的倍数每个包含数字2。写一个函数名为最小的(n)的最小数目,返回其前n的倍数包含数字2。
它的签署是
诠释最小的(国际氮)
你可以假设这样一个数字是可计算在32位机,也就是说,你没有发现在你的答案整数溢出。

范例
如果n为4回624,因为第一个4的倍数624 624,1248,1872,2496,它们都包含数字2。另外624是最小的数字,其包含的头4位数字2的倍数。
如果n是5回624,因为第一个5的倍数624 624,1248,1872,2496,3120。请注意,624也是最小的数的前4位的倍数包含2。
如果n为6回642,因为前5的倍数的六百四十二顷642,1284,1926,2568,3210,3852
如果n是7返回4062,因为第一个5的倍数的四千〇六十二顷4062,8124,12186,16248,20310,24372,28434。

请注意它是一个不错的倍数来包含数字2不止一次(如24372)。
高等应用数学问的MATLAB求解随书光盘 光盘分为两部分上传,第一部分是CAI教学资源 第二部分的资源名为:高等应用数学问的MATLAB求解光盘 part2:包含书中开发函数,使用资源及例全部代码 光盘使用说明 本光盘是薛定宇和陈阳泉所著《高等应用数学问的MATLAB求解》一书的配书光盘。本光盘的著作权归作者所有。清华大学出版社享有该光盘的中文简体版专有出版权。 本光盘包括如下目录: “CAI教学材料” 包含全套的PowerPoint文件,可以直接用于教学,具体请参见该目录中的readme.pps文件说明。目前包含的为中文版辅助材料。最新版本将在下面给出的“MATLAB大观园”网站不定期更新。英文版教学辅助材料也将在该网站给出,适于双语教学。 “例全部代码” 包含本书全部例的MATLAB语句。文件命名方法为examp章号_例号.m,例如书中例 3-5 对应的文件名为examp3_5.m。为能使得本书例 方便执行,可以在MATLAB的命令窗口中由File/Set Path菜单将例所在目录包含在内。 “开发函数和使用资源” 包含作者为本书开发的全套函数;一些可以用于符号运算的新函数放在了@sym子目录下;rsda子目录下为“粗糙集数据处理工具箱”, 该工具箱原作者为张雪峰,由薛定宇修改后定稿。 本书建议使用的其他免费工具箱均可以从给出的MATLAB大观园直接下载,其最新版本可以从下面的地址直接免费下载。 (1) bnb工具箱,书中第 6 章介绍的非线性整数规划程序。下载地址: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=95&objectType=file (2) gaot工具箱,用遗传算法求解最优化问的工具箱。为了避免和MATLAB 7.0版本的新遗传算法与直接搜索工具箱在函数名上的冲突 ,这里将主函数名改为gaopt.m,相应的函数调用语句也作了适当的改动。下载地址: http://www.ie.ncsu.edu/mirage/GAToolBox/gaot/ http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=2797&objectType=file (3) lpsolve工具箱,整数线性规划的工具箱,由C语言通过mex格式调用,如果在您的MATLAB环境下不能正确使用该工具箱的dll文件,则说明MATLAB版本不兼容,需要您自己运行该目录的lp_mex.m文件重新生成dll文件。下载地址: ftp://ftp.ics.ele.tue.nl/pub/lp_solve/ http://www.netlib.org/ampl/solvers/lpsolve/ (4) nit_new工具箱,是数值积分工具箱的修改版,原版适合于 MATLAB 4.X,为能在当前MATLAB版本下运行,对个别文件做了相关修正。下载地址: http://www.matlab-world.com/progs/toolbox/nit.zip 本书所涉及的TeXPoint 2.0.3插件是由美国加州Berkeley大学开发的,包括3个文件,其最新版本可以到开发者的网站免费下载。下载地址: http://raw.cs.berkeley.edu/texpoint/ TeXPoint 2.0.3插件所包括的3个文件也可以分别在如下地址下载: http://www.matlab-world.com/temp/TexPoint2000-2.0.3.msi http://www.matlab-world.com/temp/TexPoint2002-2.0.3.msi http://www.matlab-world.com/temp/TexPoint2003-2.0.3.msi 相关网站地址列表: MATLAB大观园,作者维护的MATLAB教学与资源网站。网站地址: http://www.matlab-world.
高等应用数学问的MATLAB求解随书光盘 光盘分为两部分上传,第一部分是CAI教学资源 第一部分的资源名为:高等应用数学问的MATLAB求解光盘 part1:包含书中CAI教学材料 光盘使用说明 本光盘是薛定宇和陈阳泉所著《高等应用数学问的MATLAB求解》一书的配书光盘。本光盘的著作权归作者所有。清华大学出版社享有该光盘的中文简体版专有出版权。 本光盘包括如下目录: “CAI教学材料” 包含全套的PowerPoint文件,可以直接用于教学,具体请参见该目录中的readme.pps文件说明。目前包含的为中文版辅助材料。最新版本将在下面给出的“MATLAB大观园”网站不定期更新。英文版教学辅助材料也将在该网站给出,适于双语教学。 “例全部代码” 包含本书全部例的MATLAB语句。文件命名方法为examp章号_例号.m,例如书中例 3-5 对应的文件名为examp3_5.m。为能使得本书例 方便执行,可以在MATLAB的命令窗口中由File/Set Path菜单将例所在目录包含在内。 “开发函数和使用资源” 包含作者为本书开发的全套函数;一些可以用于符号运算的新函数放在了@sym子目录下;rsda子目录下为“粗糙集数据处理工具箱”, 该工具箱原作者为张雪峰,由薛定宇修改后定稿。 本书建议使用的其他免费工具箱均可以从给出的MATLAB大观园直接下载,其最新版本可以从下面的地址直接免费下载。 (1) bnb工具箱,书中第 6 章介绍的非线性整数规划程序。下载地址: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=95&objectType=file (2) gaot工具箱,用遗传算法求解最优化问的工具箱。为了避免和MATLAB 7.0版本的新遗传算法与直接搜索工具箱在函数名上的冲突 ,这里将主函数名改为gaopt.m,相应的函数调用语句也作了适当的改动。下载地址: http://www.ie.ncsu.edu/mirage/GAToolBox/gaot/ http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=2797&objectType=file (3) lpsolve工具箱,整数线性规划的工具箱,由C语言通过mex格式调用,如果在您的MATLAB环境下不能正确使用该工具箱的dll文件,则说明MATLAB版本不兼容,需要您自己运行该目录的lp_mex.m文件重新生成dll文件。下载地址: ftp://ftp.ics.ele.tue.nl/pub/lp_solve/ http://www.netlib.org/ampl/solvers/lpsolve/ (4) nit_new工具箱,是数值积分工具箱的修改版,原版适合于 MATLAB 4.X,为能在当前MATLAB版本下运行,对个别文件做了相关修正。下载地址: http://www.matlab-world.com/progs/toolbox/nit.zip 本书所涉及的TeXPoint 2.0.3插件是由美国加州Berkeley大学开发的,包括3个文件,其最新版本可以到开发者的网站免费下载。下载地址: http://raw.cs.berkeley.edu/texpoint/ TeXPoint 2.0.3插件所包括的3个文件也可以分别在如下地址下载: http://www.matlab-world.com/temp/TexPoint2000-2.0.3.msi http://www.matlab-world.com/temp/TexPoint2002-2.0.3.msi http://www.matlab-world.com/temp/TexPoint2003-2.0.3.msi 相关网站地址列表: MATLAB大观园,作者维护的MATLAB教学与资源网站。网站地址: http://www.matlab-world.com MATLAB语言与应用论坛,作者维护

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧