CF签到题
Aurora_Lights · · 题解
题目传送门
题意
大致是说有两个人正在进行交替操作,有几种条件、操作:
-
将一个数的任意两位进行交换
-
删除这个数末位数字
-
重复1、2,直到只剩一位数字
思路
根据输入的数的位数分成三类处理,设输入n的位数为k
当k=1,显而易见,只有一位数字,直接输出n
当k=2,两位数字会先交换一次(只能这么做),然后再删除末尾数字,所以输出n的个位
举例:
原数:13
交换:31
删除:3
当k>=3,很容易证明,每个数字都有方案保存到最后,所以只需输出n各数位上的最小值
具体实现请看代码
code
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
int k=9;
string s;//字符串处理方便
cin>>s;
if(s.size()==1) cout<<s[0];//第一类
if(s.size()==2) cout<<s[1];//第二类
else//第三类
{
for(int i=0;i<s.size();i++)
k=min(k,s[i]-'0');
cout<<k;
}
cout<<endl;
}
return 0;
}