2013蓝桥杯C++A:颠倒的价牌(stringstream用法)
四、题目:颠倒的价牌
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用法)相关推荐
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第4题——颠倒的价牌
标题: 颠倒的价牌 小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店.其标价都是4位数字(即千元不等).小李为了标价清晰.方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了 ...
- 标题 错误票据c语言,内含答案的 -- 2013蓝桥杯C语言本科组B.doc
内含答案的 -- 2013蓝桥杯C语言本科组B.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们 ...
- 2013蓝桥杯java试题_蓝桥杯2013决赛java本科b组试题.doc
蓝桥杯2013决赛java本科b组试题.doc 试题一:公式求值问题描述输入n,m,k,输出下面公式的值.其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如 ...
- 2013\Province_C_C++_A\4.颠倒的价牌
小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店. 其标价都是4位数字(即千元不等). 小李为了标价清晰.方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了. 这种价牌有个 ...
- 第六届 蓝桥杯 省赛 Java B组 牌型总数
牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得 ...
- 蓝桥杯python组——卡片(卡牌大师。。)
蓝桥杯python组--卡片 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 小蓝有很多数字卡片,每张卡片上都是数字 0 到 9. 小蓝准备用这些卡片来拼一些数,他 ...
- 蓝桥杯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 ...
- 2013蓝桥杯-B-省赛-七、错误票据
七.错误票据 package com.markerhub;import java.util.Scanner; import java.util.ArrayList; import java.util. ...
- 2013蓝桥杯-B-省赛-六-三部排序
六.三部排序 package com.markerhub;public class TEST { // 负数都靠左端,正数都靠右端,0在中部static void sort(int[] x) //解题 ...
最新文章
- legend3---阿里云如何多个域名指向同一个网站
- C++ File IO
- 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
- 寒冰王座(DGA最长路/完全背包)
- mysql 内置功能 存储过程 目录
- MaxCompute非事务表如何更新数据
- matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?
- 人生苦短,喝点python性能鸡汤
- 单片机串口实现字符串命令解析
- sql server 事务的回滚 断电
- linux部署java命令
- 汇编语言在线视频教程
- phpspider 简单用法和学习,分类一对多爬取数据
- 前端开发hr面试试题
- iphone iOS 更换手机铃声 免itunes
- 对比解读五种主流大数据架构的数据分析能力
- 利用NTLDR进入RING0的方法及MGF病毒技术分析
- web work 。。。
- 解决cannot find -lopencv_dep_cudart问题
- 6种改善客户体验的方法
热门文章
- python编程入门书籍-零基础学习Python编程,这8本书必看!
- python自学行吗-零基础如何学习Python?看Python视频就可以吗?
- python一对一视频教学-问Python,一对一直播开发需要推流器吗?
- php禁用错误提示,php开启与关闭错误提示详解
- ntp时间同步会导致mysql关闭吗_NTP 时间同步网络弱电系统安全监测平台研究
- gsonformat 实例_10分钟看懂Photoshop 实例:在阈值模式下调整照片的清晰度
- cas5.3:CAS Server搭建
- linux 扫描开放的端口命令,在Linux系统中检查(扫描)开放端口的方法
- 1432: 【蓝桥杯】:剪格子(迷宫问题变体)
- ffdshow 源代码分析 6: 对解码器的dll的封装(libavcodec)