专栏文章

题解:P13102 [GCJ 2019 Qualification] Foregone Solution

P13102题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioymw24
此快照首次捕获于
2025/12/03 03:17
3 个月前
此快照最后确认于
2025/12/03 03:17
3 个月前
查看原文

题意

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

思路

因为数字较大,我们可以用字符串存储两个数,依次遍历每个位上的数字,如果是 44,那就可以让两个数这个位上为 113322223311,如果不是 44,我们可以让一个数这个位上为 00,另一个数这个位上为这个数本身。
CPP
#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;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...