zoukankan      html  css  js  c++  java
  • 蓝桥杯省赛历届真题:颠倒的价牌

     1 /*
     2 整体思路:
     3     枚举所有四位数,并将所有可颠倒且颠倒后合法(不以0开头)的四位数找出来,然后
     4 将其与原本数字做差,将<原数,颠倒数,差>作为一个price结构体数据类型存入两个动态数组vector
     5 然后遍历两个vector,双层for循环求和,用两个的vector的diff加起来是否为558,若是则输出六个值
     6 v1的price和v2的price 
     7 */
     8 #include <iostream>
     9 #include <sstream>
    10 #include <vector>
    11 using namespace std;
    12 void i2s(int num,string &str){//数字转字符串 
    13     stringstream ss;
    14     ss<<num;
    15     ss>>str;
    16 }
    17 void s2i(string &str,int &num){//字符串转数字 
    18     stringstream ss;
    19     ss<<str;
    20     ss>>num;
    21 }
    22 char to(char ch){//将单位数字颠倒 
    23     if(ch=='6')return '9';//因为只有6和9在颠倒后值发生变化,其他的颠倒后都是原值 
    24     else if(ch=='9')return '6';
    25     else return ch;
    26 }
    27 string reverse(const string &str){//求四位数颠倒后的结果 
    28     string ans;
    29     for(int i=3;i>=0;i--){//从最后一位开始颠倒后存入ans 
    30         ans.insert(ans.end(),to(str[i]));
    31     }
    32     return ans;
    33 }
    34 struct price{//价格结构体 
    35     int a,b,c;//原价格,颠倒价格,差值 
    36 };
    37 vector<price> v1;
    38 vector<price> v2;
    39 
    40 int main(){
    41     for(int i=1000;i<10000;i++){
    42         string str;
    43         i2s(i,str);
    44         if(str.find('3')!=string::npos||str.find('4')!=string::npos||str.find('7')!=string::npos||str.rfind('0')==3)
    45             continue;
    46         string r=reverse(str);
    47         int r_int;
    48         s2i(r,r_int);
    49         int diff=r_int-i;
    50         if(diff>-300&&diff<-200){
    51             price p={i,r_int,diff};
    52             v1.push_back(p);
    53         }else if(diff>800&&diff<900){
    54             price p={i,r_int,diff};
    55             v2.push_back(p);
    56         }
    57         for(int i=0;i<v1.size();i++){
    58             for(int j=0;j<v2.size();j++){
    59                 if(v1[i].c+v2[j].c==558){
    60                     cout<<v1[i].a<<" "<<v1[i].b<<" "<<v1[i].c<<endl;
    61                     cout<<v2[j].a<<" "<<v2[j].b<<" "<<v1[j].c<<endl;
    62                 }
    63             }
    64         }
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    原来这样就可以开发出一个百万量级的Android相机
    微信读书这样排版,看过的人都很难忘!
    AI小白快上车!这是发往高薪职位的车!
    短视频APP是如何开启你的美好生活的?
    自从我这样撸代码以后,公司网页的浏览量提高了107%!
    如果想成为一名顶尖的前端,这份书单你一定要收藏!
    老板今天问我为什么公司的数据库这么烂,我是这样回答的......
    MapReduce Notes
    HDFS Architecture Notes
    BloomFilter
  • 原文地址:https://www.cnblogs.com/nilbook/p/13550801.html
Copyright © 2011-2022 走看看