• 颠倒的牌价--(模拟)


    小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。

    其标价都是4位数字(即千元不等)。 小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见p1.jpg)。

    这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,

    比如:1958 倒着挂就是:8561,差了几千元啊!! 当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。 有一天,悲剧终于发生了。

    某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了! 庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,

    综合起来,反而多赚了558元。 请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?

     1 #include<iostream>
     2 using namespace std;
     3 /*
     4 下面的数字是合法的颠倒 
     5 1 1
     6 2 2
     7 5 5
     8 6 9
     9 8 8
    10 9 6
    11 0 0
    12 */
    13 int flag[10]={0,1,2,-1,-1,5,9,-1,8,6};
    14 int ans=0;
    15 
    16 bool valid(int x){
    17     while(x){
    18         if(flag[x%10]==-1) return false;
    19         x/=10;
    20     }
    21     return true;
    22 }
    23 
    24 int rev(int x){
    25     int d=0;
    26     while(x){
    27         d=d*10+flag[x%10];
    28         x/=10;
    29     }
    30     return d;
    31 }
    32 
    33 int main(int argc, char const *argv[])
    34 {
    35     for( int i=1001; i<=9999; i++ ){
    36         for( int j=1001; j<=9999; j++ ){
    37             if(valid(i)&&valid(j)){
    38                 int d1=i-rev(i);
    39                 int d2=rev(j)-j;
    40                 if(d1>=200&&d1<=300&&d2>=800&&d2<=900&&(d2-d1==558)){
    41                     ans++;
    42                     cout<<i<<" "<<rev(i)<<" "<<j<<" "<<rev(j)<<endl;
    43                 }
    44             }
    45         }
    46     }
    47     return 0;
    48 }
    有些目标看似很遥远,但只要付出足够多的努力,这一切总有可能实现!
  • 相关阅读:
    日志收集
    解决spawn-fcgi child exited with: 1
    confluence启动关闭
    Informatica 启动、停止工作流命令
    启动obiee
    oracle修改连接空闲自动断开
    ORA-00845: MEMORY_TARGET not supported on this system
    svn执行clean up命令时报错
    手游推广
    phonegap/cordova 升级版本
  • 原文地址:https://www.cnblogs.com/Bravewtz/p/10454697.html
Copyright © 2020-2023  润新知