颠倒的号码牌

来源:互联网 发布:重庆药交所网络事业部 编辑:程序博客网 时间:2024/04/29 17:38

小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。其标价都是4位数字(即千元不等)。小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了。  

    这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊!!      当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。
    有一天,悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了!
    庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。
    请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?

答案是一个4位的整数,请通过浏览器直接提交该数字。 

<span style="font-size:14px;">#include<stdio.h> #include<math.h>int main(){int num1[7]={0,1,2,5,6,8,9},num2[7]={0,1,2,5,9,8,6};//因为6要变成9,9要变成6,所以定义两个数组,6 9位置颠倒 int a,b,c,d,i,j,k,m;int p1,p3,diff1,p2,diff2;//p1,p3表示赔二百的,p2表示挣八百的 for(a=1;a<7;a++){for(b=0;b<7;b++){for(c=0;c<7;c++){for(d=1;d<7;d++){p1=num1[a]*1000+num1[b]*100+num1[c]*10+num1[d];p3=num2[d]*1000+num2[c]*100+num2[b]*10+num2[a];diff1=fabs(p1-p3); if(diff1>200&&diff1<300){for(i=1;i<7;i++){for(j=0;j<7;j++){for(k=0;k<7;k++){for(m=1;m<7;m++){p2=num1[i]*1000+num1[j]*100+num1[k]*10+num1[m];diff2=fabs(p2-(num2[m]*1000+num2[k]*100+num2[j]*10+num2[i])); if(diff2>800&&diff2<900&&fabs(diff1-diff2)==558){if(p1<p3){printf("%5d",p3);    return 0;}else{printf("%5d",p1);    return 0;}}}}}}}}}}} return 0;}</span>


1 0