四、题目:颠倒的价牌
Description

小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。
其标价都是4位数字(即千元不等)。
小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见图片)。
这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊!!
当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。
有一天,悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了!
庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。

请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?


**分析思路:**枚举所有可以颠倒的四位数
将其颠倒过来,与原来的数值做差,将-200多与800多记录下来,分别记录在两个集合中
遍历两个集合,-200多和800多两两求和,结果为558的即为正确答案


stringstream用法
当我们需要按预定的格式将程序中的数据保存在一个string 中的时候,可以先创建一个stringstream 对象,并通过运算符 ”<<“ 将数据传递给 stringstream 对象。(这与通过”<<“ 使用cout 对象的方法相同。)接着,我们可以通过调用stringstream 类的函数str() 将对象所包含的内容赋给一个string对象。在下面的程序中,我们先将数据传递给一个stringstream 对象,然后通过该 stringstream 对象将数值赋给一个string 对象。
str里面是i的字符串形式,里面的3,4,7,还有最后一位也就是数组第4位不能为0


代码:

#include<iostream>
#include<sstream>
#include<vector>
using namespace std;void i2s(int num,string &str){  //将数字转换为字符串
stringstream ss;  //用法类似于cout
ss<<num;  //>>是将那个num传入到stringstream中
ss>>str; //用stringstream 类的函数str() 将对象所包含的内容赋给一个string对象。
}void s2i(string &str,int &num){stringstream ss;  //将字符串反转为数字ss<<str;ss>>num;
}
char to(char x){  //字符的翻转 if(x=='6') return '9';else if(x=='9') return '6';else return x; //x:指0,1,2,5,8,这几个数字反转后还是本身
}string reserve(const string &str){  //reserve作用类似旋转180°string ans; //结果 for(int i=3;i>=0;i--){ //扫描,从最后一位开始转换之后 ans.insert(ans.end(),to(str[i]));  //把最后一个字符插入 }
return ans;
}
struct price{  //定义一个价格的结构体
int a,b,c;   //a:原始价格 ,b:翻转颠倒价格,c:原始价格与颠倒价格的差
};
vector<price> v1;  //存储-200多的
vector<price> v2;   //存储+800多的
int main(){cout<<reserve<<endl;  //在这个地方可以测试原题中给出的数据//枚举所有可以颠倒的四位数 //   将其颠倒过来,与原来的数值做差,将-200多与800多记录下来,分别记录在两个集合中//遍历两个集合,-200多和800多两两求和,结果为558的即为正确答案for(int i=1000;i<10000;i++){string str;i2s(i,str);if(str.find('3')!=string::npos||str.find('4')!=string::npos||str.find('7')!=string::npos||str.rfind('0')==3)  //str里面是i的字符串形式,里面的3,4,7,还有最后一位也就是数组第4位不能为0continue;string r=reserve(str); //翻转的字符 int r_int;s2i(r,r_int);  //r_int就是翻转后的价格,i是原始价格int plus=r_int-i;  //plus就是价格差if(plus>-300&&plus<-200){  //价格范围 price p={i,r_int,plus};v1.push_back(p);} else if(plus>800&&plus<900){  //价格范围 price p={i,r_int,plus};v2.push_back(p);}//此时v1存储-200多的价格,v2存储+800多for(int i=0;i<v1.size();i++){for(int j=0;j<v2.size();j++){if(v1[i].c+v2[j].c==558){printf("%d %d %d %d %d %d\n",v1[i].a,v1[i].b,v1[i].c,v2[j].a,v2[j].b,v2[j].c);}}} }return 0;}

答案为:9088

2013蓝桥杯C++A:颠倒的价牌(stringstream用法)相关推荐

  1. 征战蓝桥 —— 2013年第四届 —— C/C++A组第4题——颠倒的价牌

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

  2. 标题 错误票据c语言,内含答案的 -- 2013蓝桥杯C语言本科组B.doc

    内含答案的 -- 2013蓝桥杯C语言本科组B.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们 ...

  3. 2013蓝桥杯java试题_蓝桥杯2013决赛java本科b组试题.doc

    蓝桥杯2013决赛java本科b组试题.doc 试题一:公式求值问题描述输入n,m,k,输出下面公式的值.其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如 ...

  4. 2013\Province_C_C++_A\4.颠倒的价牌

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

  5. 第六届 蓝桥杯 省赛 Java B组 牌型总数

    牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得 ...

  6. 蓝桥杯python组——卡片(卡牌大师。。)

    蓝桥杯python组--卡片 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 小蓝有很多数字卡片,每张卡片上都是数字 0 到 9. 小蓝准备用这些卡片来拼一些数,他 ...

  7. 蓝桥杯2013c++真题:颠倒的价牌

    用4个for循环枚举所有符合题意的4位数(每位数只能是1,2,35,6,8,9,0,且首尾和末尾不能是0) int num[7]={0,1,2,5,6,7,9}; for(int i=1;i<7 ...

  8. 2013蓝桥杯-B-省赛-七、错误票据

    七.错误票据 package com.markerhub;import java.util.Scanner; import java.util.ArrayList; import java.util. ...

  9. 2013蓝桥杯-B-省赛-六-三部排序

    六.三部排序 package com.markerhub;public class TEST { // 负数都靠左端,正数都靠右端,0在中部static void sort(int[] x) //解题 ...

最新文章

  1. legend3---阿里云如何多个域名指向同一个网站
  2. C++ File IO
  3. 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
  4. 寒冰王座(DGA最长路/完全背包)
  5. mysql 内置功能 存储过程 目录
  6. MaxCompute非事务表如何更新数据
  7. matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?
  8. 人生苦短,喝点python性能鸡汤
  9. 单片机串口实现字符串命令解析
  10. sql server 事务的回滚 断电
  11. linux部署java命令
  12. 汇编语言在线视频教程
  13. phpspider 简单用法和学习,分类一对多爬取数据
  14. 前端开发hr面试试题
  15. iphone iOS 更换手机铃声 免itunes
  16. 对比解读五种主流大数据架构的数据分析能力
  17. 利用NTLDR进入RING0的方法及MGF病毒技术分析
  18. web work 。。。
  19. 解决cannot find -lopencv_dep_cudart问题
  20. 6种改善客户体验的方法

热门文章

  1. python编程入门书籍-零基础学习Python编程,这8本书必看!
  2. python自学行吗-零基础如何学习Python?看Python视频就可以吗?
  3. python一对一视频教学-问Python,一对一直播开发需要推流器吗?
  4. php禁用错误提示,php开启与关闭错误提示详解
  5. ntp时间同步会导致mysql关闭吗_NTP 时间同步网络弱电系统安全监测平台研究
  6. gsonformat 实例_10分钟看懂Photoshop 实例:在阈值模式下调整照片的清晰度
  7. cas5.3:CAS Server搭建
  8. linux 扫描开放的端口命令,在Linux系统中检查(扫描)开放端口的方法
  9. 1432: 【蓝桥杯】:剪格子(迷宫问题变体)
  10. ffdshow 源代码分析 6: 对解码器的dll的封装(libavcodec)