模拟——卡布列克圆舞曲

原文链接:https://www.luogu.com.cn/problem/P1532

模拟——卡布列克圆舞曲_第1张图片
AC代码:

#include
#include
#include
#include
#include
#include
using namespace std;
#define ll long long
ll num;
string st;
stringstream ss;
map<string,int> Map;
vector<string> vec;
int cmp(const char &a,const char &b){
	return a>b;
}
void deal(){
	ll i,j,k;
	string s0,s1;
	Map.clear();
	vec.clear();
	while(1){
		if(Map.find(st)==Map.end()){
			Map.insert(pair<string,int>(st,1));
			vec.push_back(st);
		}
		else{
			for(i=0;i<vec.size();i++){
				if(vec[i]==st) break;
			}
			for(;i<vec.size();i++){
				cout<<vec[i]<<" ";
			}
			cout<<endl;
			return ;
		}
		s0=st;
		sort(s0.begin(),s0.end(),cmp);
		s1=st;
		sort(s1.begin(),s1.end());
		ss<<s0;ss>>i;ss.str("");ss.clear();
		ss<<s1;ss>>j;ss.str("");ss.clear();
		k=i-j;
		ss<<k;ss>>st;ss.str("");ss.clear();
		if(st.length()<num){
			for(i=0;i<num-st.length();i++){
				st.insert(0,0);
			}
		}
	}
}
int main(){
	int i,j;
	while(cin>>st){
		if(st=="-1"){
			break;
		}
		else{
			num=st.length();
			deal();
		}
	}
	return 0;
}

你可能感兴趣的:(模拟)