|
|
发表于 2017-5-4 14:36:38
|
显示全部楼层
答案是 993 x 913 = 906609
思路:主要研究如何节省计算时间,数值大于900000,即其中任意一个数不能小于900000/999=900,i从999到900,j从i递减,同时只要i x j<900000,跳出循环因为再小的j都没意义了,如此程序最大可能节省时间。
- #include<stdio.h>
- int main(void)
- {
- int i,j,Num,a=0,b=0,Rst=0;
- for(i=999;i>=900;--i)
- {
- for(j=i;j>=900;--j)
- {
- Num=i*j;
- if(Num<900000) break;
- //剔除过小的数字节省计算量
- if(Num-Num/10*10==9)
- if((Num-Num/100*100)/10==(Num/10000-Num/100000*10))
- if((Num-Num/1000*1000)/100==(Num/1000-Num/10000*10))
- if(Num>Rst)
- {
- a=i; b=j; Rst=Num;
- }
- }
- }
- printf("%d x %d = %d\n",a,b,Rst);
- return 0;
- }
复制代码 |
|