📄 subject_38614.htm
字号:
<p>
序号:38614 发表者:windtalker 发表日期:2003-05-04 22:33:21
<br>主题:初学者问,有兴趣的请进来看看
<br>内容:这期电脑报上的一个小题目,报上是用VB解的,我是VC初学者,大家能不能帮忙写出C或C++的代码啊?<BR><BR>警察老K遇到了一个难题,一辆卡车违反了交通规则,撞死了行人,司机畏罪逃走了,当时有三个有目击了这一车祸的发生,但都没有看清楚车号,只注意到了牌照号码的某些特征:<BR>甲:记得牌照的前两个数字是相同的;<BR>乙:记得牌照的后两个数字是相同的;<BR>丙:是一位数学家,他说:“牌照的号码肯定是四位数的,并且这个四位数是一个整数的平方。”<BR>根据这些线索,你能判断出正确的牌照吗?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:qqwang 回复日期:2003-05-04 23:28:49
<br>内容:小生不才,随便编了个滥程序算了算,<BR>其实题目很简单,<BR>可能考虑的最重要的应该是算法的效率问题。<BR>7744<BR><BR>以下是程序代码:<BR>-------------------------------------------------------------<BR>#include <iostream.h><BR>#include <stdio.h><BR>struct FourBit<BR>{<BR> short n1,n2,n3,n4;<BR>};<BR><BR>void getBit(int num,FourBit* fourbit);<BR><BR>int main()<BR>{<BR> int i,j,num;<BR> FourBit* fourbit;<BR> cout<<"Result"<<endl;<BR> for(i=1;i<100;i++)<BR> {<BR> num=i*i;<BR> getBit(num,fourbit);<BR> if(fourbit->n1==fourbit->n2&&fourbit->n3==fourbit->n4)<BR> {<BR> cout<<"i="<<i<<endl;<BR> cout<<"Car Number:"<<fourbit->n1<<fourbit->n2<<fourbit->n3<<fourbit->n4<<endl;<BR> }<BR> }<BR> getchar();<BR> return 0;<BR>}<BR><BR>void getBit(int num,FourBit* fourbit)<BR>{<BR> fourbit->n1=num/1000;<BR> fourbit->n2=(num-fourbit->n1*1000)/100;<BR> fourbit->n3=(num-fourbit->n1*1000-fourbit->n2*100)/10;<BR> fourbit->n4=(num-fourbit->n1*1000-fourbit->n2*100-fourbit->n3*10);<BR>}<BR>------------------------------------------------------------------------------<BR>程序编的很滥,只是想算算.......见笑了....<BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:罗兹维尔 回复日期:2003-05-05 11:12:34
<br>内容:因为是四位数<BR>只需计算 31 到 99 就行了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:qqwang 回复日期:2003-05-05 21:56:33
<br>内容:车牌号的四位和整数的四位不一样啦。<BR>车牌第一位可以是0,<BR>比如说0025。。。。<BR>所以说,应该从1 4 9 16。。。。。99^2
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:trevor 回复日期:2003-05-06 14:01:46
<br>内容:可以先从第三个限制条件考虑,因为号码是一个整数的平方,而且后两位是同一个数字,所以后两位只能是“11,44,55,66,99,00”(没有哪个整数平方后的个位是2,3,7或8),而前两位还一样,所以可以通过最多60次运算来排查这个数(这是因为前两位有十种可能,后两位有六种可能。但从逻辑上考虑,不可能四位都一样,尽管这个条件题目没有给,所以最多运算次数是50)。剩下的问题就是考虑一个四位数是否是一个整数平方的算法(上面讲的运算次数就是这个算法的运算次数),其实很简单,把四位数开方,看结果是否为整数就行了。算法可以写成这样:<BR>#include <math.h><BR>main(){<BR>int i,j,k,n,r;<BR>double q,p;<BR>int A[6];<BR>int B[6]={0,11,44,55,66,99};//后两位的六种可能性<BR>r=0;<BR>for(i=0;i<10;i++)<BR>{<BR> j=i*1100;<BR> k=0;<BR> while((k<6)&&(k!=i))//排除了四位相同的情况<BR> {<BR> A[k]=j+B[k];<BR> q=A[k];<BR> printf("\nq=%f",q);<BR> p=sqrt(q);<BR> printf("\np=%f",p);<BR> n=(int)p;//对开方后的浮点型数据取整 <BR> if((p-n)==(float)0)<BR> {<BR> printf("\nthe number is %d",A[k]);<BR> r=1;<BR> break;<BR> }<BR> else<BR> k=k+1;<BR> }<BR> if(r==1)//前面得到正确结果后置为1,然后跳出循环<BR> break;<BR> }<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:qqwang 回复日期:2003-05-06 20:00:38
<br>内容:开平方运算的计算量也不见得就会小。。。。。。<BR>我没有自己去研究过一次开平方运算需要几个次乘法运算,<BR>不过感觉起来也不简单。。。。。。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:罗兹维尔 回复日期:2003-05-08 08:51:19
<br>内容:1楼比4楼好
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:于小澍 回复日期:2003-05-08 09:43:51
<br>内容:其实就是一个数学问题,如果前两位是00的话那么后面只能是11,22<BR>,33,44,55,66,77,88,99<BR>明显都不符合吗!!(上面这位仁兄已经说明)所以只能是4位数<BR>我那c变了一段!请指教!!虽然很烂!!<BR> jingcha()<BR>{int i,n1,n2,n3,n4,num;<BR> for(i=31;i<99;i++)<BR> { <BR> num=i*i;<BR> n1=num/1000;<BR> n2=num/100-n1*10;<BR> if(n1==n2)<BR> { n3=num/10-n2*10;<BR> n4=num-n3*10:<BR> if(n3==n4)<BR> printf("The number is: %d\n",num);<BR> }<BR>}<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:风雪神话 回复日期:2003-05-10 22:08:01
<br>内容:小弟不才,投机取巧编了一个,把0000这种情况也考虑进去了.<BR>#include<iostream.h><BR>#include<math.h><BR>void main()<BR>{<BR> int a[]={0,11,22,33,44,55,66,77,88,99},b;<BR> double c;int i,j;<BR> for(i=0;i<=9;i++)<BR> for(j=0;j<=9;j++)<BR> {<BR> //if(i==0||j==0)<BR> // continue;<BR> //else<BR> {b=a[i]*100+a[j];<BR> c=sqrt(b);<BR> int d=(int)(c*1000);<BR> if(d%1000==0)<BR> { cout<<b<<endl;<BR> cout<<"是"<<c<<"的平方"<<endl;<BR> }<BR><BR> }}<BR>}<BR>2003-5-10 22:09:19
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -