正文

66.除式还原(1)2005-09-10 15:18:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/1716.html

分享到:

66.除式还原(1) 给定下列除式,其中包含5个7,其它打×的是任意数字,请加以还原。 × 7 × --------------商 -------------- 除数------××| ×××××-------------被除数 ×7 7 -------------- × 7 × × 7 × ---------- × × × × ---------- ○ *题目分析与算法设计 首先分析题目,由除式本身尽可能多地推出已知条件。由除式本身书已知: 1、被除数的范围是10000到99999,除数的范围是10到99,且可以整除; 2、商为100到999之间,且十位数字为7; 3、商的第一位与除数的积为三位数,且后两位为77; 4、被除数的第三位一定为4; 5、 7乘以除数的积为一个三位数,且第二位为7; 6、商的最后一位不能为0,且与除数的积为一个二位数。 由已知条件就可以采用穷举的方法找出结果。 *程序与程序注释 #include<stdio.h> void main() { long int i; int j,l; for(i=10000;i<=99999;i++) /*1. i:被除数*/ if(i%1000-i%100==400) /*4. 被除数的第三位一定为4*/ for(j=10;j<=99;j++) /*1. j: 余数*/ if(i%j==0&&(l=i/j)%100>=70&&l%100<80&&l%10!=0&&l>100&&l<=999) /*1. 可以整除&& 2.商l在100到999之间且十位数字为7&&6.商的个数不能为0*/ if((j*(l%10))<100&&j*(l%10)>10) /*6. 商的个数与除数的积为二位数*/ if(j*7%100>=70&&j*7%100<80) /*5. 7乘以除数的积的第二位为7*/ if(j*(l/100)%100==77&&j*(l/100)>100) /*商的第一位与除数的积的后两位为77*/ printf("%ld/%ld=%d\n",i,j,l); } *运行结果 51463/53=971。 可以看作为下列算式: 9 7 1 ------------- 5 3| 5 1 4 6 3 4 7 7 ------------- 3 7 6 3 7 1 ----------- 5 3 5 3 ----------- ○ *问题的进一步讨论 在推出的已知条件中,几所有的条件都是十分明显的,换句话说,推出的已知条件就是对题目的平铺直叙。这种推已知条件的方法十分简单,并且行之有效。 *思考题 下列除式中仅给定了一个8,其它打×的位置上是任意数字,请还原。 × 8 × ----------------商 ---------------- 除数-------×××| ××××××---------------被除数 ×××× --------------- ××× ××× --------------- ×××× ×××× --------------- ○

阅读(3684) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册