题解:P13102 [GCJ 2019 Qualification] Foregone Solution

· · 题解

P13102 [GCJ 2019 Qualification] Foregone Solution

题意

给你一个数,让你拆成两个数字,两个数字不能含有 4 这个数字,让你输出一种方式。

思路

因为数字较大,我们可以用字符串存储两个数,依次遍历每个位上的数字,如果是 4,那就可以让两个数这个位上为 132231,如果不是 4,我们可以让一个数这个位上为 0,另一个数这个位上为这个数本身。

#include<bits/stdc++.h>
using namespace std;
int t,step=0; 
char s[10005],s2[10005],s3[10005];
int main()
{
    cin>>t;
    while(t--)
    {
        step++;
        cin>>s;
        for(int i=0;i<strlen(s);i++)
        {
            if(s[i]=='4') s2[i]='1',s3[i]='3';
            else s2[i]=s[i],s3[i]='0';
        }
        cout<<"Case #"<<step<<": ";
        for(int i=0;i<strlen(s);i++) cout<<s2[i];
        cout<<" ";
        int flag=1;
        for(int i=0;i<strlen(s);i++)
            if(s3[i]=='0'&&flag) continue;
            else
            {
                flag=0;
                cout<<s3[i];
            }
        cout<<"\n";
    }
    return 0;
}