#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
string a;
while(t--)
{
cin>>a;
int l=a.length();
long long sum=0,y=0,w=0,r=0,l1=0;
for(int i=0;i<l;i++)
{
if(('9'>=a[i])&&(a[i]>='0')){
w=a[i]-'0';
l1++;
sum=sum*10+w;
}}
y=pow(10,l1);
if(y==sum) cout<<0;
else if(y<sum) cout<<sum-y;
else
{
r=pow(10,l1-1);
cout<<sum-r;
}
if(t!=0) cout<<endl;
}
return 0;
}
B. Polycarp Writes a String from Memory
思路:set依次存字符,当出现第四个不同字符时清空同时sum++,结束循环后如果set内还有字符,再+1.
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main()
{
int t;
cin>>t;
string a;
while(t--)
{
cin>>a;
int l=a.length();
set<char>q;
int sum=0,e;
for(int i=0;i<l;i++)
{
q.insert(a[i]);
if(q.size()>=4)
{
sum++;
q.clear();
q.insert(a[i]);
}
}
if(q.size()<=3) sum++;
cout<<sum<<endl;
}
}
思路:先把单词内字母排序,从最小的开始依次加起并检查和给定数字相比是否小于等于,是则用map存。
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main()
{
int t;
cin>>t;
string aa="0abcdefghijklmnopqrstuvwxyz";
string c;
int b;
while(t--)
{
cin>>c>>b;
int l=c.length();
map<char,int>m;
string a;
a=c;
sort(a.begin(),a.end());
int max=0,sum=0;
for(int i=0;i<l;i++)
{
sum=sum+a[i]-'0'-48;
if(sum<=b)
{
m[a[i]]++;
}
// cout<<a[i];
}
for(int i=0;i<l;i++)
{
if(m[c[i]])
{
cout<<c[i];
m[c[i]]--;
}
}
cout<<endl;
}
}