B3981 [信息与未来 2024] 图灵完备
查看原帖
B3981 [信息与未来 2024] 图灵完备
1218894
wuzhanghao_666楼主2024/6/16 10:35

本题主要考察数位分离

例如:210,输出

+(+!![]+!![]+[])+(+!![]+[])+(+[]+[])

可以看作3个部分

2:+(+!![]+!![]+[])

1:+(+!![]+[])

0:+(+[]+[])

每一位数都有“+(......+[])”

数为几中间就输出几个+!![],0则输出+[]

代码:

#include<iostream>
using namespace std;
int main(){
	int n,w[20]/*储存每一位*/,cnt=0/*位数*/;
	string s;//储存答案
	cin>>n;
   	//特判
	if(n==0){
		cout<<"+[]";
		return 0;
	}
  	//数位分离
	while(n){
		w[++cnt]=n%10;
		n/=10;
	}
  	//此时w数组有n的每一位数
	for(int i=cnt;i>=1;i--){
		s+="+(";//固定格式
      		//特判
		if(w[i]==0){
			s+="+[]";
		}else{
        		//数为几中间就输出几个+!![]
			for(int j=1;j<=w[i];j++){
				s+="+!![]";
			}
		}
		s+="+[])";//固定格式
	}
	cout<<s;
}
2024/6/16 10:35
加载中...