13省Ca4-颠倒的价牌,数组

该程序旨在找出13省Ca4中价格标签颠倒的情况。通过定义数字转换函数change,将四位数转换为特定规则的四位数,并计算两者之差作为价差。然后检查两个商品的价格是否满足特定条件(如价差为558且价格在特定范围内)。程序遍历所有可能的组合,输出满足条件的商品编号。这涉及到数值逻辑、条件判断及数组操作等概念。
摘要由CSDN通过智能技术生成

13省Ca4-颠倒的价牌


link.

#include <bits/stdc++.h>
using namespace std;
const int N=1e4;
int A[N],W[N],num[10]={0,1,2,-1,-1,5,9,-1,8,6};
int change(int x){
    int a=x%10;x/=10;
    int b=x%10;x/=10;
    int c=x%10;x/=10;
    int d=x%10;x/=10;
    a=num[a];if(a==-1)return -1;
    b=num[b];if(b==-1)return -1;
    c=num[c];if(c==-1)return -1;
    d=num[d];if(d==-1)return -1;
    int ans=a*1000+b*100+c*10+d;
    if(ans<1000)return -1;
    return ans;
}
bool check(int i,int j){
    if(W[i]+W[j]!=558)return false;
    if(W[i]>0)swap(i,j);
    int a=abs(W[i]),b=W[j];
    if(a>200&&a<300&&b>800&&b<900)return true;
    return false;
}
int main(){
    for(int i=1000;i<N;i++){
        A[i]=change(i);
        if(A[i]!=-1)
            W[i]=A[i]-i;
    }
    for(int i=1000;i<N;i++)
        for(int j=i+1;j<N;j++)
            if(check(i,j)){
                cout<<j<<endl;
                return 0;//cout<<i<<" "<<j<<endl;
            }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值