题解:P10691 [SNCPC2024] chmod

· · 题解

本题是比赛的签到题,线下赛共计 117 个队伍通过。

给出一个三位的十进制数表示一个文件的权限。由于三位十进制数分别代表三种用户的权限,不难想到把他拆成三位分别处理。

对于每一位的十进制数,将其转换为二进制,如果对应位是 1 则分别输出 r,w,x 即可。

具体地,拆分十进制数的代码如下:第一位:n/100;第二位:n/10%10;第三位:n%10
对于每一位十进制数:第一位:x/4;第二位:x/2%2;第三位:x%2

代码:

#include<bits/stdc++.h>
using namespace std;
int t,ans,n;
inline void get(const int x){
    if(x/4==1)cout<<"r";else cout<<"-"; 
    if(x/2%2==1)cout<<"w";else cout<<"-"; 
    if(x%2==1)cout<<"x";else cout<<"-"; 
}
signed main(){
    ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
    for(cin>>t;t--;ans=0){
        cin>>n;
        get(n/100),get(n/10%10),get(n%10);
        cout<<"\n"; 
    }
}